Остерегайтесь того, что подключение к Интернету на самом деле ничего не значит: что, если вы подключены к своему провайдеру, но магистраль не работает, или все сайты, к которым вы хотите получить доступ, находятся в стране, которая недавно вышла из сети? Наличие соединения не означает, что вы можете делать то, что хотите.
В любом случае, как было сказано ранее, вы можете использовать InternetGetConnectedState
API для проверки того, что у вас настроено действительное подключение к Интернету.
Например, следующая процедура правильно сказала мне, что у меня есть подключение к локальной сети, но не удалось обнаружить, что мой брандмауэр ZoneAlarm настроен на блокировку «Вся активность в Интернете», что означает, что вы фактически потеряли все подключения к Интернету.
Дельфийская рутина:
procedure IsConnected;
var
dwFlags: DWORD;
begin
if InternetGetConnectedState(@dwFlags, 0) then
begin
if (dwFlags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then
ShowMessage('Modem Connection')
else
if (dwFlags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then
ShowMessage('LAN Connection')
else
if (dwFlags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then
ShowMessage('Connection thru Proxy')
else
if (dwFlags and INTERNET_CONNECTION_OFFLINE) = INTERNET_CONNECTION_OFFLINE then
ShowMessage('Local system in offline mode')
else
if (dwFlags and INTERNET_CONNECTION_CONFIGURED) = INTERNET_CONNECTION_CONFIGURED then
ShowMessage('Valid connection exists, but might or might not be connected')
end
else
ShowMessage('Not Connected. Try to connect and risk of being prompted to dial into another Internet Service Provider.');
end;