インターネットに接続しても、実際には何の意味もないことに注意してください。ISPに接続しているが、バックボーンがダウンしている場合、またはアクセスしたいすべてのサイトが最近のようにグリッドから外れた国にある場合はどうでしょうか。接続があるからといって、やりたいことができるわけではありません。
とにかく、前に述べたように、InternetGetConnectedState
APIを使用して、有効なインターネット接続が構成されていることをテストできます。
例として、次のルーチンはLAN接続があることを正しく教えてくれましたが、ZoneAlarmファイアウォールが「すべてのインターネットアクティビティ」をブロックするように設定されていることを検出できませんでした。つまり、すべてのインターネット接続が事実上失われました。
Delphiルーチン:
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;