Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > C/C++: Системное программирование и WinAPI > Как узнать программно статус сетевого подключения?


Автор: Сергей85 23.07.19, 15:39
Windows 2000 SP4, Borland C++ Builder v.6.0.

Требуется флаг наличия контакта с внешним миром: "подключено" и "подключение ограничено или отсутствует".

Автор: Сергей85 20.08.19, 15:49
Ап, актуально. Через реестр не смог найти вручную какой-либо параметр.

Автор: Олег М 21.08.19, 15:36
Цитата Сергей85 @
Ап, актуально. Через реестр не смог найти вручную какой-либо параметр.

Попробуй через WMI - Win32_NetworkConnection

Автор: ЫукпШ 21.08.19, 23:39
Наверное, это где-то тут:

RasEnumEntries
RasEnumConnections
RasGetConnectStatus
RasDial
RasHangUp
RasGetConnectionStatistics

Header Declared in Ras.h.
Library Use Rasapi32.lib.
DLL Requires Rasapi32.dll.

Автор: Gonarh 25.08.19, 05:31
Цитата Сергей85 @
Требуется флаг наличия контакта с внешним миром: "подключено" и "подключение ограничено или отсутствует".

Нет такого флага, и не будет. Только если самому писать функцию.

Автор: Сергей85 27.08.19, 15:25
Инкдуд: #include <WinInet.h>.
Библиотека, подключаемая в проект: WinInet.lib весом 21504б;

Исходный код:
DWORD dwFlag_Returned; //Бросовая переменная.
bool bResult= InternetGetConnectedState(&dwReturnedFlag, 0); //Подлючено - true. 0 - похож на номер сетевого подключения в системе.

Проблемы:
- возможны задержки отображения измененного состояния до 1 минуты (показывает true вместо false);
- при нескольких сетевых картах баг: подключенная карта становится нулевой.

Автор: shm 27.08.19, 17:40
Наличие активного подключения никак не гарантирует "связи с внешнем миром". Гораздо надежнее периодически пинговать нужный ресурс.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)