type
PASTAT = ^TASTAT;
TASTAT = record
adapter : TAdapterStatus;
name_buf : array [0..29] of TNameBuffer;
end;function GetNetCardID(): String;
var
myNcb: TNCB;
myURetCode: UCHAR;
myNetName: array[0..49] of Char;
mylenum: TLanaEnum;
myCount: Integer;
begin Result := ''; FillChar(myNcb, sizeof(myNcb), 0);
myNcb.ncb_command := Char(NCBENUM);
myNcb.ncb_buffer := PChar(@mylenum);
myNcb.ncb_length := sizeof(mylenum);
myURetCode := Byte(Netbios(@myNcb)); for myCount := 0 to integer(mylenum.length) - 1 do
begin FillChar(myNcb, sizeof(myNcb), 0);
myNcb.ncb_command := Char(NCBRESET);
myNcb.ncb_lana_num := mylenum.lana[myCount]; myURetCode := Byte(Netbios(@myNcb)); FillChar(myNcb, sizeof(myNcb), 0);
myNcb.ncb_command := Char(NCBASTAT);
myNcb.ncb_lana_num := mylenum.lana[myCount]; StrPCopy(myNcb.ncb_callname, '* ');
myNcb.ncb_buffer := PChar(@Adapter);
myNcb.ncb_length := sizeof(Adapter); myURetCode := Byte(Netbios(@myNcb)); if (myURetCode = 0) then
begin Result := IntToHex(byte(Adapter.adapter.adapter_address[0]), 2) + '-' +
IntToHex(byte(Adapter.adapter.adapter_address[1]), 2) + '-' +
IntToHex(byte(Adapter.adapter.adapter_address[2]), 2) + '-' +
IntToHex(byte(Adapter.adapter.adapter_address[3]), 2) + '-' +
IntToHex(byte(Adapter.adapter.adapter_address[4]), 2) + '-' +
IntToHex(byte(Adapter.adapter.adapter_address[5]), 2);
end; end;end;
如果是开机进入window一会后再开程序调用这个函数就可以返回第一个网卡的mac地址
但是如果是在注册表自动运行程序调用这个函数就有时行有时不行
请问为什么?
PASTAT = ^TASTAT;
TASTAT = record
adapter : TAdapterStatus;
name_buf : array [0..29] of TNameBuffer;
end;function GetNetCardID(): String;
var
myNcb: TNCB;
myURetCode: UCHAR;
myNetName: array[0..49] of Char;
mylenum: TLanaEnum;
myCount: Integer;
begin Result := ''; FillChar(myNcb, sizeof(myNcb), 0);
myNcb.ncb_command := Char(NCBENUM);
myNcb.ncb_buffer := PChar(@mylenum);
myNcb.ncb_length := sizeof(mylenum);
myURetCode := Byte(Netbios(@myNcb)); for myCount := 0 to integer(mylenum.length) - 1 do
begin FillChar(myNcb, sizeof(myNcb), 0);
myNcb.ncb_command := Char(NCBRESET);
myNcb.ncb_lana_num := mylenum.lana[myCount]; myURetCode := Byte(Netbios(@myNcb)); FillChar(myNcb, sizeof(myNcb), 0);
myNcb.ncb_command := Char(NCBASTAT);
myNcb.ncb_lana_num := mylenum.lana[myCount]; StrPCopy(myNcb.ncb_callname, '* ');
myNcb.ncb_buffer := PChar(@Adapter);
myNcb.ncb_length := sizeof(Adapter); myURetCode := Byte(Netbios(@myNcb)); if (myURetCode = 0) then
begin Result := IntToHex(byte(Adapter.adapter.adapter_address[0]), 2) + '-' +
IntToHex(byte(Adapter.adapter.adapter_address[1]), 2) + '-' +
IntToHex(byte(Adapter.adapter.adapter_address[2]), 2) + '-' +
IntToHex(byte(Adapter.adapter.adapter_address[3]), 2) + '-' +
IntToHex(byte(Adapter.adapter.adapter_address[4]), 2) + '-' +
IntToHex(byte(Adapter.adapter.adapter_address[5]), 2);
end; end;end;
如果是开机进入window一会后再开程序调用这个函数就可以返回第一个网卡的mac地址
但是如果是在注册表自动运行程序调用这个函数就有时行有时不行
请问为什么?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货