![]() |
|
||||||||
경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지 |
|
아.. SendAPR를 이용한 방법도.. 이건 IP 주소를 기반한 건데, 여러 NIC가 있을 경우 특정 NIC의 MAC을 얻을때 좋습니다.
program Project1; {$APPTYPE CONSOLE} uses Windows, SysUtils, WinSock, JclSysInfo; function SendARP(DestIP:ULONG; SrcIP:DWORD; PMacAddr:PULONG; PhyAddrLen:PULONG): DWORD; stdcall; external 'iphlpapi.dll' name 'SendARP' delayed; function GetMacAddress(const IPAddr: AnsiString): string; var DestIP: ULONG; MacAddr: array [0..5] of Byte; MacAddrLen: ULONG; begin DestIP := inet_addr(PAnsiChar(IPAddr)); MacAddrLen := Length(MacAddr); SendARP(DestIP, 0, @MacAddr, @MacAddrLen); Result := Format('%2.2X-%2.2X-%2.2X-%2.2X-%2.2X-%2.2X', [MacAddr[0], MacAddr[1], MacAddr[2], MacAddr[3], MacAddr[4], MacAddr[5]]); end; begin try Writeln(GetMacAddress('192.168.0.1')); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. 관련 글 리스트
|
Copyright © 1999-2015, borlandforum.com. All right reserved. |
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes, JclSysInfo;
var
Addresses: TStrings;
begin
try
Addresses := TStringList.Create;
JclSysInfo.GetMacAddresses('', Addresses);
Writeln(Addresses.Text);
Addresses.Free;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.