Даже если все что только есть на вашем компьютере находится в "онлайне" это еще не означает, что интернет доступен.
Вот это ДААААА!!! А я то думаю... почему я флэшку подключаю, а интернета нет??? Спасибо что просветили.
Например, InternetCheckConnection() в цикле. Начиная с Windows Vista ещё вот такое можно попробовать NotifyUnicastIpAddressChange(). Если хочется без заморочек и чтобы стабильно было, то пишем драйвер, подключаемся к PnP-колбекам TDI типа add/delete address, затем через каждый из полученных интерфейсов шлём запросы куда-нибудь на тестовый сервер в Интернет, ну и в зависимости от результатов уже решаем, есть сеть или нет. Кстати, если кто не в курсе, то встроенный менеджер сетей Windows Vista и выше так и делает - определяет доступность Интернета путём попыток подключения к определённым Web-сайтам по их именам.