Macadresse und Computername mit diesen Funktionen
Delphi-Quellcode:
function GetComputerName(IPAddr:
String):
string;
var
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
begin
WSAStartup($101, WSAData);
SockAddrIn.sin_addr.s_addr := inet_addr(PAnsiChar(AnsiString(IPAddr)));
// <-- IP-Addr nach AnsiString wandeln
HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt <>
nil then
Result :=
string(StrPas(Hostent^.h_name))
// <- Hostname nach String wandeln
else
Result := '
';
end;
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);
// msdn.microsoft.com/e...aa366358(VS.85).aspx
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 := '
ERROR_GEN_FAILURE';
ERROR_INVALID_PARAMETER:
Result := '
ERROR_INVALID_PARAMETER';
ERROR_INVALID_USER_BUFFER:
Result := '
ERROR_INVALID_USER_BUFFER';
ERROR_BAD_NET_NAME:
Result := '
ERROR_BAD_NET_NAME';
ERROR_BUFFER_OVERFLOW:
Result := '
ERROR_BUFFER_OVERFLOW';
else
Result := '
Error: RC='+IntToStr(RC);
end;
end;
ich würde gern den alles hier mal anhängen..nur leider gehört mein code nicht in die Rubrik "Da kann man was lernen".
ich hänge die Exe mal an , die Netzwerksache tut es ja auch ohne Receiver.