Russian Qt Forum
Июнь 16, 2024, 16:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Получить список сетевых адаптеров  (Прочитано 8479 раз)
G-virus
Гость
« : Апрель 06, 2011, 21:43 »

Всем привет. Подскажите пожалуйста, как можно получить список имен сетевых устройств в винде.
Пробовал так:
Код
C++ (Qt)
QProcess proc;
proc.start("ipconfig");
proc.waitForReadyRead();
QString list = QString(proc.readAll());
 

Не получается, весь вывод айпиконфига не успевает записаться в QString. Как можно "успеть" поместить весь вывод в QString или QStringList. А еще лучше, можно ли сделать так, чтобы в QString\QStringList откуда-нибудь достать список имен сетевых устройств, чтобы было как-то так:

Подключение по локальной сети
Подключение по локальной сети 2
Hamachi

и т.п.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Апрель 06, 2011, 22:18 »

Создавай QProcess в куче и коннектся на его сигнал void QProcess::readyReadStandardOutput () [signal]
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
G-virus
Гость
« Ответ #2 : Апрель 06, 2011, 22:46 »

Создавай QProcess в куче и коннектся на его сигнал void QProcess::readyReadStandardOutput () [signal]

То есть, по сути, нужно сделать что-то типо такого?

Код
C++ (Qt)
 
void show()
{
 QString str = proc.readAll();
 qDebug(str.toAscii());
}
 
int main()
{
 QProcess *proc = new QProcess;
 connect(proc, SIGNAL(readyReadStandardOutput()), this, SLOT(show()));
 proc.start("ipconfig");
delete proc;
return 0;
}
 
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Апрель 07, 2011, 07:19 »

Нет. У тебя же оно не успеет отработать. Можно закостылить:
Код
C++ (Qt)
int main()
{
 QProcess proc;
 proc.start("ipconfig");
 while (!proc.waitForReadyRead ()) {}
 //Read
return 0;
}
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
G-virus
Гость
« Ответ #4 : Апрель 07, 2011, 13:02 »

Нет. У тебя же оно не успеет отработать. Можно закостылить:

Да, кажись сработало. Только в условии цикла отрицание убрал. Спасибо =)
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Апрель 16, 2011, 04:29 »

Цитировать
QList<QNetworkInterface> QNetworkInterface::allInterfaces ()   [static]
Записан
Waryable
Гость
« Ответ #6 : Апрель 22, 2011, 12:28 »

Цитировать
QList<QNetworkInterface> QNetworkInterface::allInterfaces ()   [static]
Блин как просто. Извиняюсь за оффтоп, но у меня сразу такая ассоциация: VB::dai_mne_pozhalusta_all_LAN();
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.337 секунд. Запросов: 23.