![]() |
MAC-Adresse im LAN anhand der IP / des Namens erhalten
Hallo,
ich schreibe mir gearde ein WakeOnLAN-Tool. Es soll auch die MAC-Adresse anhand einer IP oder eines Rechnernamens ermitteln können. Ich habe hier im Forum gesucht, und als "passendstes" Thema ![]() Wie kann ich nun auch bei anderen Geräten mit Delphi die Adresse herausfinden? Mit der Lösung über arp im o.g. Thema komme ich leider nicht klar :-( Danke, ManuMF [edit]Neue Erkenntnisse: liegt nicht nur am Netzwerkdrucker[/edit] |
Re: MAC-Adresse im LAN anhand der IP / des Namens erhalten
Liste der Anhänge anzeigen (Anzahl: 1)
habe da etwas im Netz gefunden was Dir helfen könnte.
Delphi-Quellcode:
wobei SendArp eine Funktion aus iphlpapi.dll ist:
procedure TMain.btnArpClick(Sender: TObject);
var DestIP, SrcIP: IPAddr; pMacAddr: PULong; AddrLen: ULong; MacAddr: array[0..5] of byte; p: PByte; s: string; i: integer; begin SrcIp := 0; s := ''; InputQuery('Find Mac Address by Arp Request','Input Destination IPAddress',s); DestIP := inet_addr(PChar(s)); pMacAddr := @MacAddr[0]; AddrLen := SizeOf(MacAddr); SendARP(DestIP, SrcIP, pMacAddr, AddrLen); s := ' MacAddress : '; p := PByte(pMacAddr); if Assigned(p) and (AddrLen>0) then for i := 0 to AddrLen-1 do begin s := s + IntToHex(p^,2) + '-'; Inc(p); end; SetLength(s, length(s)-1); sbMain.Panels[2].Text:=s; end; function SendARP; external 'iphlpapi.dll' name 'SendARP'; Die dll habe ich angefügt. Grüße Klaus |
Re: MAC-Adresse im LAN anhand der IP / des Namens erhalten
Hallo,
danke erst mal. Nachdem ich SendArp als Procedure deklariert habe (sonst hätte ich einen Rückgabetyp gebraucht), hängt der Compiler nun an
Delphi-Quellcode:
"inet_addr" kennt er ebenfalls nicht. Wo sind die Deklarationen zu finden?
var
DestIP, SrcIP: IPAddr; Danke, ManuMF |
Re: MAC-Adresse im LAN anhand der IP / des Namens erhalten
OK, ich habe es jetzt gelöst. :-D
Die Funktion "inet_addr" kommt aus Winsock. Den Rest ("IPAddr" bzw. die SendARP Funktion) nehme ich jetzt aus den Units aus dem o.g. Thema. Gruß, ManuMF |
Re: MAC-Adresse im LAN anhand der IP / des Namens erhalten
kannst du mir sagen wie du das gelöst hast???
ich steig da gerade gar net durch!!! |
Re: MAC-Adresse im LAN anhand der IP / des Namens erhalten
Diese Funkton wandelt mir eine IP in eine MAC-Adresse um:
Delphi-Quellcode:
Die Unit IPHlpAPI.pas findest du angehängt im Beitrag, auf den ich oben verwiesen habe.
uses IPHlpAPI, WinSock;
function IPToMAC(IP: String) : String; var DestIP, SrcIP: Cardinal; pMacAddr: PULong; AddrLen: ULong; MacAddr: array[0..5] of byte; p: PByte; i: integer; begin result := ''; SrcIp := 0; DestIP := inet_addr(PChar(IP)); pMacAddr := @MacAddr[0]; AddrLen := SizeOf(MacAddr); SendARP(DestIP, SrcIP, pMacAddr, AddrLen); p := PByte(pMacAddr); if Assigned(p) and (AddrLen>0) then for i := 0 to AddrLen-1 do begin result := result + IntToHex(p^,2) + '-'; Inc(p); end; SetLength(result, Length(result) - 1); end; Gruß, ManuMF |
Re: MAC-Adresse im LAN anhand der IP / des Namens erhalten
der compiler findet bei mir die IPHlpAPI nicht
was soll ich tun bin absoluter neuling danke |
Re: MAC-Adresse im LAN anhand der IP / des Namens erhalten
sorry habs doch geschaft :-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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 by Thomas Breitkreuz