我做了一个小软件,想在里面加一个小广告,如果能ping到我的主机就显示一个页面
如果不能ping到就显示本地的一个html结果我调用了这个函数后不管是拨号还是不拨号,都返回可以ping到网上的主机。程序如下:请高手指点一下哪里错了,我对IcmpSendEcho实在不熟悉下面程序都是我在论坛上搜索出来的。function   PingHost(HostIP:   String):   Boolean;   
  type   
      PIPOptionInformation   =   ^TIPOptionInformation;   
      TIPOptionInformation   =   packed   record   
                                                TTL:   Byte;   
                                                TOS:   Byte;   
                                                Flags:   Byte;   
                                                OptionsSize:   Byte;   
                                                OptionsData:   PChar;   
                                                end;   
    
          PIcmpEchoReply   =   ^TIcmpEchoReply;   
          TIcmpEchoReply   =   packed   record   
                                        Address:   DWORD;   
                                        Status:   DWORD;   
                                        RTT:   DWORD;   
                                        DataSize:   Word;   
                                        Reserved:   Word;   
                                        Data:   Pointer;   
                                        Options:   TIPOptionInformation;   
                                        end;   
          TIcmpCreateFile   =   function:   THandle;   stdcall;   
          TIcmpCloseHandle   =   function(IcmpHandle:   THandle):   Boolean;   stdcall;   
          TIcmpSendEcho   =   function(IcmpHandle:THandle;   
                                      DestinationAddress:   DWORD;   
                                      RequestData:   Pointer;   
                                      RequestSize:   Word;   
                                      RequestOptions:   PIPOptionInformation;   
                                      ReplyBuffer:   Pointer;   
                                      ReplySize:   DWord;   
                                      Timeout:   DWord   
                                      ):   DWord;   stdcall;   
  var   
        hICMP                       :   THandle;   
        hICMPdll                 :   THandle;   
        IcmpCreateFile     :   TIcmpCreateFile;   
        IcmpCloseHandle   :   TIcmpCloseHandle;   
        IcmpSendEcho         :   TIcmpSendEcho;   
        pIPE                         :   PIcmpEchoReply;
        FIPAddress             :   DWORD;   
        FSize                       :   DWORD;   
        FTimeOut                 :   DWORD;   
        BufferSize             :   DWORD;   
        pReqData,pRevData:PChar;   
        MyString:string;
  begin   
        Result   :=   False;   
        hICMPdll   :=   LoadLibrary('icmp.dll');   
        if   hICMPdll   =   0   then   exit;   
    
        @ICMPCreateFile   :=   GetProcAddress(hICMPdll,   'IcmpCreateFile');   
        @IcmpCloseHandle   :=   GetProcAddress(hICMPdll,'IcmpCloseHandle');   
        @IcmpSendEcho   :=   GetProcAddress(hICMPdll,   'IcmpSendEcho');   
    
        hICMP   :=   IcmpCreateFile;   
    
        if   (hICMP   =   INVALID_HANDLE_VALUE)   then   exit;   
    
        FIPAddress   :=   inet_addr(PChar(HostIP));
        MyString   :=   'Hello,World';                                 //send   data   buffer   
        pReqData   :=   PChar(MyString);   
    
        FSize   :=   40;                                                             //receive   data   buffer   
        BufferSize   :=   SizeOf(TICMPEchoReply)   +   FSize;   
        GetMem(pIPE,BufferSize);   
        FillChar(pIPE^,   SizeOf(pIPE^),   0);   
        GetMem(pRevData,FSize);   
        pIPE^.Data   :=   pRevData;   
    
        FTimeOut   :=   4000;
         IcmpSendEcho(hICMP,   FIPAddress,   pReqData,   Length(MyString), nil,   pIPE,   BufferSize,   FTimeOut);       //发送报文
                    try   
                    if   pReqData^   =   pIPE^.Options.OptionsData^   then     //发送的数据和接受的数据吻合   
                        begin   
                              Result:=true;
                          end;
                    except                        Result:=false;
                    end;
   
  end;