AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte LuckiePing
Thema durchsuchen
Ansicht
Themen-Optionen

LuckiePing

Ein Thema von Luckie · begonnen am 19. Mär 2006 · letzter Beitrag vom 2. Dez 2010
Antwort Antwort
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#1

Re: LuckiePing

  Alt 5. Mai 2008, 17:13
Zitat von renekr:
Hast du diese Funktion mal unter Vista getestet oder liegt es ev. an Rechten oder der UAC.
IcmpSendEcho() mag unter Vista keinen TimeOut von 0.

Ersetze IcmpPing (in retPing.pas) durch diese Version:
Delphi-Quellcode:
(**)
type
  PIPAddr = ^TIPAddr;
  TIPAddr = record
    S_un: record
      case Integer of
        1: (
          S_un_b: record
            s_b1: Byte;
            s_b2: Byte;
            s_b3: Byte;
            s_b4: Byte;
          end);
        2: (
          S_un_w: record
            s_w1: Word;
            s_w2: Word;
          end);
        4: (
          S_addr: LongWord);
    end;
  end;
  PIpOptionInformation32 = ^TIpOptionInformation32;
  TIpOptionInformation32 = record
    Ttl : Byte;
    Tos : Byte;
    Flags : Byte;
    OptionsSize: Byte;
    OptionsData: LongWord; // Pointer32
  end;
  PIcmpEchoReply32 = ^TIcmpEchoReply32;
  TIcmpEchoReply32 = record
    Address : TIPAddr;
    Status : LongWord;
    RoundTripTime: LongWord;
    DataSize : Word;
    Reserved : Word;
    Data : LongWord; // Pointer32
    Options : TIpOptionInformation32;
  end;
(**)

function IcmpPing(IP: DWORD): Boolean;
var
  IcmpHandle: THandle;
  ReplyBuffer: record
    EchoReply: TIcmpEchoReply32;
  end;
begin
  Result := False;
  IcmpHandle := IcmpCreateFile;
  if IcmpHandle <> INVALID_HANDLE_VALUE then
  try
    FillChar(ReplyBuffer, SizeOf(ReplyBuffer), 0);
    Result := IcmpSendEcho(IcmpHandle, TInAddr(IP), nil, 0, nil, @ReplyBuffer,
      SizeOf(ReplyBuffer), 1000) <> 0;
  {$IFDEF DEBUG}
    if not Result then
      Assert(GetLastError() <> ERROR_INVALID_PARAMETER,
        'IcmpSendEcho: Invalid Parameters!');
  {$ENDIF DEBUG}
  finally
    IcmpCloseHandle(IcmpHandle);
  end;
end;
...dann sollte es wieder funktionieren.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz