procedure TForm1.Button1Click(Sender: TObject);
var
   Types : Integer;
begin   Types := INTERNET_CONNECTION_MODEM +
            INTERNET_CONNECTION_LAN +
            INTERNET_CONNECTION_PROXY;

     if InternetGetConnectedState(@types, 0) then
       Edit1.Text := 'your pc is Online now'
    else
       Edit1.Text := 'your pc is offline now';
end;解释一下 Types 作用 

解决方案 »

  1.   

    該函數原型如下:
    BOOL InternetGetConnectedState(
      LPDWORD lpdwFlags,
      DWORD dwReserved
    );
    Delphi中好像沒有聲明該API,所以要手動聲明:function InternetGetConnectedState(var flags:integer;Reserved:integer):boolean;stdcall;external 'wininet.dll';其中flags參數,會返回如下值之一或者多個值的組合:
     INTERNET_CONNECTION_MODEM: 使用拔號上網
     INTERNET_CONNECTION_LAN:   通過局域網連接到Internet
     INTERNET_CONNECTION_PROXY: 使用代理連接Internet
     INTERNET_CONNECTION_MODEM_BUSY: MODEM被其他非INTERNET连接占用
     INTERNET_CONNECTION_OFFLINE: 離線
     INTERNET_RAS_INSTALLED: 系統安裝了RSA
     INTERNET_CONNECTION_CONFIGURED
      

  2.   

    uses
      wininet;procedure TForm1.Button1Click(Sender: TObject);
    var
      flags: DWORD;
    begin
      if InternetGetConnectedState(@flags, 0) then
      begin
        if (flags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then
          showmessage('Modem')
        else if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then
          showmessage('LAN')
        else if (flags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then
          showmessage('Proxy')
        else if (flags and INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY then
          showmessage('Modem Busy');
        end;
      end;
    end;
      

  3.   

    這個函數有時不準,ms建議使用IsNetworkAlive
      

  4.   

    if GetSystemMetrics(SM_NETWORK) AND $01=$01 then
       showmessage('您的机器连接到了互联网上')
    else
       showmessage('您的机器没有连接到了互联网上');
      

  5.   

    Function IsNetworkAlive(var lpdwFlagsLib:Integer):Integer;stdcall;external "SENSAPI.DLL";函数的声明