怎样获取网卡的MAC地址? 怎样获取网卡的MAC地址? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般使用NetBios接口方法Google上很多例子的http://lysoft.7u7.net 快速取得CPU序列号,网卡Mac地址,硬盘序列号,注册码示例源程序 请参考这个地址:http://www.delphifans.com/SoftView/SoftView_1171.html http://www.xrw-123.go.nease.net/自己下载 通过IP取MAC地址 uses WinSock;Function sendarp(ipaddr:ulong; temp:dword; ulmacaddr:pointer; ulmacaddrleng:pointer) : DWord; StdCall; External 'Iphlpapi.dll' Name 'SendARP';procedure TForm1.Button1Click(Sender: TObject);var myip:ulong; mymac:array[0..5] of byte; mymaclength:ulong; r:integer;begin myip:=inet_addr(PChar('192.168.6.180')); mymaclength:=length(mymac); r:=sendarp(myip,0,@mymac,@mymaclength); label1.caption:='errorcode:'+inttostr(r); label2.caption:=format('%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x',[mymac[0],mymac[1],mymac[2],mymac[3],mymac[4],mymac[5]]);end; function GetMAC:string;var ncb : TNCB; s:string; Adapt : TAdapterStatus; LanaEnum : TLanaEnum; i, j, m : Integer; strPart, strMac : string;begin FillChar(ncb, SizeOf(TNCB), 0); ncb.ncb_command := Char(NCBEnum); ncb.ncb_buffer := PChar(@lanaEnum); ncb.ncb_length := SizeOf(TLanaEnum); s:=Netbios(@ncb); for i := 0 to Integer(LanaEnum.length)-1 do begin FillChar(ncb, SizeOf(TNCB), 0); ncb.ncb_command := Char(NCBReset); ncb.ncb_lana_num := LanaEnum.lana[i]; Netbios(@ncb); Netbios(@ncb); FillChar(ncb, SizeOf(TNCB), 0); ncb.ncb_command := Chr(NCBAstat); ncb.ncb_lana_num := lanaEnum.lana[i]; ncb.ncb_callname := '* '; ncb.ncb_buffer := PChar(@adapt); ncb.ncb_length := SizeOf(TAdapterStatus); m:=0; if (Win32Platform = VER_PLATFORM_WIN32_NT) then m:=1; if m=1 then begin if Netbios(@ncb) = Chr(0) then strMac := ''; for j := 0 to 5 do begin strPart := IntToHex(integer(adapt.adapter_address[j]), 2); strMac := strMac + strPart + '-'; end; SetLength(strMac, Length(strMac)-1); end; if m=0 then if Netbios(@ncb) <> Chr(0) then begin strMac := ''; for j := 0 to 5 do begin strPart := IntToHex(integer(adapt.adapter_address[j]), 2); strMac := strMac + strPart + '-'; end; SetLength(strMac, Length(strMac)-1); end; end; Result:=strmac;end; 截取程序的网络封包的数据从什么地方获取 程序不能修改 C#程序员,临时要修改delphi程序,超菜鸟问题请帮忙 rave当中控件显示 怎么关闭游戏登录界面上的输入法 关于文本文件的几个问题? 请问用D7的IdTCPServer/Client做文件传输,接收端怎么获得每次的流包文件的大小?也就是做个进度条 各位高手,请问哪里有基于delphi的DirectX教程? 紧急求救, 关于ADO+sql2000发布问题 Delphi里数组的下标能不能从0开始? 请问如何得到汉字的gb2312编码的十六进制表示?在线等。。。 在线等-100分(第一次用Rave,请大家帮个忙)
Google上很多例子的http://lysoft.7u7.net
请参考这个地址:http://www.delphifans.com/SoftView/SoftView_1171.html
uses
WinSock;Function sendarp(ipaddr:ulong;
temp:dword;
ulmacaddr:pointer;
ulmacaddrleng:pointer) : DWord; StdCall; External 'Iphlpapi.dll' Name 'SendARP';procedure TForm1.Button1Click(Sender: TObject);
var
myip:ulong;
mymac:array[0..5] of byte;
mymaclength:ulong;
r:integer;
begin
myip:=inet_addr(PChar('192.168.6.180'));
mymaclength:=length(mymac);
r:=sendarp(myip,0,@mymac,@mymaclength);
label1.caption:='errorcode:'+inttostr(r);
label2.caption:=format('%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x',[mymac[0],mymac[1],mymac[2],mymac[3],mymac[4],mymac[5]]);
end;
var
ncb : TNCB;
s:string;
Adapt : TAdapterStatus;
LanaEnum : TLanaEnum;
i, j, m : Integer;
strPart, strMac : string;
begin
FillChar(ncb, SizeOf(TNCB), 0);
ncb.ncb_command := Char(NCBEnum);
ncb.ncb_buffer := PChar(@lanaEnum);
ncb.ncb_length := SizeOf(TLanaEnum);
s:=Netbios(@ncb);
for i := 0 to Integer(LanaEnum.length)-1 do begin
FillChar(ncb, SizeOf(TNCB), 0);
ncb.ncb_command := Char(NCBReset);
ncb.ncb_lana_num := LanaEnum.lana[i];
Netbios(@ncb);
Netbios(@ncb);
FillChar(ncb, SizeOf(TNCB), 0);
ncb.ncb_command := Chr(NCBAstat);
ncb.ncb_lana_num := lanaEnum.lana[i];
ncb.ncb_callname := '* ';
ncb.ncb_buffer := PChar(@adapt);
ncb.ncb_length := SizeOf(TAdapterStatus);
m:=0;
if (Win32Platform = VER_PLATFORM_WIN32_NT) then m:=1;
if m=1 then begin
if Netbios(@ncb) = Chr(0) then
strMac := '';
for j := 0 to 5 do begin
strPart := IntToHex(integer(adapt.adapter_address[j]), 2);
strMac := strMac + strPart + '-';
end;
SetLength(strMac, Length(strMac)-1);
end;
if m=0 then
if Netbios(@ncb) <> Chr(0) then begin
strMac := '';
for j := 0 to 5 do begin
strPart := IntToHex(integer(adapt.adapter_address[j]), 2);
strMac := strMac + strPart + '-';
end;
SetLength(strMac, Length(strMac)-1);
end;
end;
Result:=strmac;
end;