Hola buenas tardes;
Estoy desarroyando un programa y para ello me pasaron un codigo delcuan estoy aprendiendo pero me ocurre una cosa y la verdad no lo entiendo por ello recurro a ustedes por si me pueden echar una mano, el codigo es el siguiente:
Código Delphi
[-] uses winsock;
type
PULONG = ^ULONG;
function SendARP(DestIP,SrcIP: in_addr; pMacAddr,PhyAddrLen: PULONG): DWORD;
stdcall; external 'iphlpapi.dll' name 'SendARP';
function ObtenerMAC(IP: String): String;
var
i: Integer;
dwRetVal: DWORD;
DestIp, SrcIp: in_addr;
MacAddr: array[0..1] of ULONG;
PhysAddrLen: ULONG;
PhysAddr: PByte;
begin
DestIp.S_addr:= 0;
SrcIp.S_addr:= 0;
PhysAddrLen:= 6;
DestIp.S_addr:= inet_addr(PChar(IP));
dwRetVal:= SendARP(DestIp, SrcIp, @MacAddr, @PhysAddrLen);
Result:= EmptyStr;
if dwRetVal = NO_ERROR then
begin
PhysAddr:= PByte(@MacAddr);
for i := 1 to Sizeof(MacAddr)-2 do
begin
if Result= EmptyStr then
Result:= IntToHex(PhysAddr^,2)
else
Result:= Result + '-' + IntToHex(PhysAddr^,2);
inc(PhysAddr);
end;
end;
end;
ShowMessage(ObtenerMAC('143.1.14.202'));
La linea 22 la modifique por -> DestIp.S_addr:= inet_addr(PAnsiChar(IP));
El caso es que si sustituyo inet_addr(PAnsiChar(IP)) por inet_addr(PAnsiChar('
143.1.14.202')) al ejecutar el programa me da la MAC correcta, sin embargo si en su lugar lo
sustituyo por inet_addr(PAnsiChar(edit1.text)) ejecuto el programa, introduzco en el campo edit la misma ip pero al clicar en el botón que llama a la función el programa me muestra en blanco el campo MAC.
y es aquí don de me pierdo, necesito que el programa me permita introducir cualquier IP y que este me diga su MAC ¿que estoy haciendo mal?
gracias por adelantado