function TForm1.CheckOffline: boolean;
var
  ConnectState: DWORD;
  StateSize: DWORD;
begin
  ConnectState:= 0;
  StateSize:= SizeOf(ConnectState);
  result:= false;
  if InternetQueryOption(nil, INTERNET_OPTION_CONNECTED_STATE, @ConnectState, StateSize) then  if (ConnectState and INTERNET_STATE_DISCONNECTED) <> 2 then result:= true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  if CheckOffline then
  edit1.text:= 'Connect To ISP'
  else
  edit1.text:= 'Disconnect To ISP';
end;

解决方案 »

  1.   

    uses WinInet;procedure TForm1.Button1Click(Sender: TObject);  function GetOnlineStatus : Boolean;
      var ConTypes : Integer;
      begin
        ConTypes := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY;
        if (InternetGetConnectedState(@ConTypes, 0) = False)
         then Result := False
         else Result := True;
      end;begin
     if GetOnlineStatus then
       ShowMessage(' Connected')
       else ShowMessage(' not Connected');
    end;
      

  2.   

    下面的代码可以实现你的要求。如果还想更深入了解你可以去 http://delphix.126.com
    的控件仓库中下载netusers.zip,他的源码写的很好。 procedure TForm1.Button1Click(Sender: TObject);
    var Ip,IpStr:string;  ch:array[1..32]of char;  i:integer;
        WSData:TWSAData;  MyHost:PHostEnt;
    begin
       if WSAstartup(2,WSData)<>0 then
          begin
             ShowMessage('没有成功返回!');
             Halt(2);
          end;
       try
          if getHostName(@ch[1],32)<>0 then
             begin
                ShowMessage('没有成功返回!');
                Halt(3);
             end;
       except
          ShowMessage('没有成功返回!');
          Halt(3);
       end;
       MyHost:=GetHostByName(@ch[1]);
       if MyHost=NIL then
          begin
             ShowMessage('没有成功返回!');
             Halt(4);
          end
       else
          begin
             for i:=1 to 4 do
                begin
                   Ip:=inttostr(Ord(MyHost.h_addr^[i-1]));
                   ShowMessage('IP分段地址为:'+Ip);
                   IPStr:=IPStr+Ip;
                   if i<4 then IPStr:=IPStr+'.'
                   else  ShowMessage('IP地址为:'+IPStr);
                end;
          end;
    end;