» Help

Check if computer is connected to the internet

   

I found this snippet long ago on a site called delphi3000 but the site does not exist anymore. This code needs some work. It is supposed to check for a specific URL is online or not. It does not work as intended. It works to determine if the computer is connected or not.

function IsConnected: Boolean;
const
  // Local system has a valid connection to the Internet, but it might or might
  // not be currently connected.
  INTERNET_CONNECTION_CONFIGURED = $40;
 
  // Local system uses a local area network to connect to the Internet.
  INTERNET_CONNECTION_LAN = $02;
 
  // Local system uses a modem to connect to the Internet
  INTERNET_CONNECTION_MODEM = $01;
 
  // Local system is in offline mode.
  INTERNET_CONNECTION_OFFLINE = $20;
 
  // Local system uses a proxy server to connect to the Internet
  INTERNET_CONNECTION_PROXY = $04;
 
  // Local system has RAS installed.
  INTERNET_RAS_INSTALLED = $10;
 
var
  InetState: DWORD;
  hHttpSession, hReqUrl: HInternet;
begin
  Result:= InternetGetConnectedState(@InetState, 0);
  if (
    Result 
    and 
    (
      InetState and INTERNET_CONNECTION_CONFIGURED
        = INTERNET_CONNECTION_CONFIGURED)
    ) then
  begin
    // so far we ONLY know there's a valid connection. See if we can grab some 
    // known URL ...
    hHttpSession:= InternetOpen(
      PChar(Application.Title), // this line is the agent string
      INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0
    );
    try
      hReqUrl:= InternetOpenURL(
        hHttpSession, 
        PChar('http://wwww.example.com'{ the URL to check }), 
        nil, 
        0, 
        0, 
        0
      );
      Result := hReqUrl <> nil;
      InternetCloseHandle(hReqUrl);
    finally
      InternetCloseHandle(hHttpSession);
    end;
  end
  else
    if (
      InetState and INTERNET_CONNECTION_OFFLINE = INTERNET_CONNECTION_OFFLINE
    ) then
      Result := False; // we know for sure we are offline.
end;
Author: Unknown
Contributor: Don Rowlett
Added: 2013-04-24
Last updated: 2013-04-24

« Return to contents »