InternetCheckConnection всегда возвращает false - PullRequest
3 голосов
/ 18 февраля 2009

Я хочу использовать функцию Wininet InternetCheckConnection, чтобы проверять, подключено ли устройство к Интернету и имеет ли доступ к определенному хосту. Проблема заключается в том, что эта функция всегда возвращает false , независимо от того, какой URL я на него указал.

MSDN-ссылка

Ответы [ 3 ]

5 голосов
/ 24 февраля 2012

Следующая комбинация работает для меня в Windows 7 и Windows XP SP3:

 InternetCheckConnection("http://www.google.com", FLAG_ICC_FORCE_CONNECTION, 0) ;

GetLastError () возвращает 0, если соединение возможно, и возвращает 12029 (Попытка подключения к серверу не удалась), если нет.

Следующие комбинации не работают для меня:

  InternetCheckConnection(NULL, FLAG_ICC_FORCE_CONNECTION, 0) ;

GetLastError () возвращает 12016 (запрошенная операция недопустима).

  InternetCheckConnection(NULL, 0, 0) ;
  InternetCheckConnection(("http://www.google.com", 0, 0) ;

для обоих GetLastError () возвращает 2250 (сетевое соединение не найдено).

3 голосов
/ 18 февраля 2009

Вы проверили GetLastError()? Если я правильно прочитал MSDN, вам нужно проверить ERROR_NOT_CONNECTED, чтобы определить, действительно ли вы отключены.

0 голосов
/ 18 февраля 2009

Просто дикая догадка, но, возможно, это связано с тем, что персональный брандмауэр блокирует все исходящие соединения для одной из библиотек DLL Windows и / или вашего приложения?

...