Gute Frage ehrlich gesagt. Daran habe ich gar nicht gedacht, dass ein Rechner mehrere Netzwerkkarten haben könnte.
Das ist die Funktion, die ich nutze:
Delphi-Quellcode:
function GetMacAddr(
IP:
string;
var MAC:
string): Integer;
var
DestIP: IPAddr;
pMacAddr: PULong;
AddrLen: ULong;
MacAddr:
array[0..5]
of byte;
p: PByte;
i: integer;
res: Integer;
begin
DestIp := inet_addr(PChar(
IP));
pMacAddr := @MacAddr[0];
AddrLen := SizeOf(MacAddr);
res := SendARP(DestIP, 0, pMacAddr, AddrLen);
if res = NO_ERROR
then
begin
p := PByte(pMacAddr);
for i := 0
to AddrLen - 1
do
begin
MAC := MAC + IntToHex(p^, 2) + '
-';
Inc(p);
end;
SetLength(MAC, length(MAC) - 1);
end;
Result := res;
end;