Einzelnen Beitrag anzeigen

Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Mac Adresse mit IP herausfinden... Habe code, wie anpassen?

  Alt 13. Aug 2013, 20:28
Hi,

also ich mache das Ganze mit der folgenden Funktion:

Delphi-Quellcode:
function SendARP(const DestIP, SrcIP: in_addr; pMacAddr: PULONG;
                 var PhyAddrLen: ULONG): DWORD; stdcall;
                 external 'IPHLPAPI.DLLname 'SendARP';
                                                                                                             
function GetMacAddr(const IPv4: String): String;
  const
    SrcIP: in_addr = (S_addr: 0);
  var
    DestIP: in_addr;
    MacAddr: array[0..5] of Byte;
    MacAddrLen, RC: DWORD;
    i: Integer;
begin
  Result := '';
  DestIP.S_addr := inet_addr(PAnsiChar(AnsiString(IPv4)));
  MacAddrLen := Length(MacAddr);
  RC := SendARP(DestIP,SrcIP,@MacAddr,MacAddrLen);
  case RC of
    NO_ERROR:
      begin
        if (MacAddrLen = 6) then
          for i := 0 to 5 do begin
            if (i > 0) then
              Result := Result + ':';
            Result := Result + IntToHex(MacAddr[i],2);
          end
        else
          Result := 'Error: MacAddrLen='+IntToStr(MacAddrLen);
      end;
    ERROR_GEN_FAILURE:
      Result := 'MAC-Adresse konnte nicht ermittelt werden. Fehler:' + #13#10 + 'ERROR_GEN_FAILURE';
    ERROR_INVALID_PARAMETER:
      Result := 'MAC-Adresse konnte nicht ermittelt werden. Fehler:' + #13#10 + 'ERROR_INVALID_PARAMETER';
    ERROR_INVALID_USER_BUFFER:
      Result := 'MAC-Adresse konnte nicht ermittelt werden. Fehler:' + #13#10 + 'ERROR_INVALID_USER_BUFFER';
    ERROR_BAD_NET_NAME:
      Result := 'MAC-Adresse konnte nicht ermittelt werden. Fehler:' + #13#10 + 'ERROR_BAD_NET_NAME';
    ERROR_BUFFER_OVERFLOW:
      Result := 'MAC-Adresse konnte nicht ermittelt werden. Fehler:' + #13#10 + 'ERROR_BUFFER_OVERFLOW';
    else
      Result := 'Error: RC='+IntToStr(RC);
  end;
end;
Klappt bei mir hervorragend.
  Mit Zitat antworten Zitat