如何在程序中获得本机的MAC地址(100分)

  • 主题发起人 主题发起人 wdq
  • 开始时间 开始时间
W

wdq

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在DELPHI程序中用什么函数获得本机的MAC地址
 

Function NBGetAdapterAddress(a:integer) : String;
Implementation

{$R *.DFM}

Procedure TForm1.Button1Click(Sender : TObject);
Begin
label1.Caption:=NBGetAdapterAddress(StrtoInt(Edit1.Text));
End;

Function NBGetAdapterAddress(a:Integer) : String;
Var

NCB : TNCB; // Netbios control block //NetBios控制块
ADAPTER : TADAPTERSTATUS; // Netbios adapter status//取网卡状态
LANAENUM : TLANAENUM; // Netbios lana
intIdx : Integer; // Temporary work value//临时变量
cRC : Char; // Netbios return code//NetBios返回值
strTemp : String; // Temporary string//临时变量

Begin
// Initialize
Result := '';

Try
// Zero control blocl
ZeroMemory(@NCB, SizeOf(NCB));

// Issue enum command
NCB.ncb_command := Chr(NCBENUM);
cRC := NetBios(@NCB);

// Reissue enum command
NCB.ncb_buffer := @LANAENUM;
NCB.ncb_length := SizeOf(LANAENUM);
cRC := NetBios(@NCB);
If Ord(cRC)<>0 Then
exit;

// Reset adapter
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBRESET);
NCB.ncb_lana_num := LANAENUM.lana[a];
cRC := NetBios(@NCB);
If Ord(cRC)<>0 Then
exit;

// Get adapter address
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBASTAT);
NCB.ncb_lana_num := LANAENUM.lana[a];
StrPCopy(NCB.ncb_callname, '*');
NCB.ncb_buffer := @ADAPTER;
NCB.ncb_length := SizeOf(ADAPTER);
cRC := NetBios(@NCB);

// Convert it to string
strTemp := '';
For intIdx := 0 To 5 Do
strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[in
tIdx]),2);
Result := strTemp;
Finally
End;
End;


End.
 
mac:介质访问控制层地址?
是要获得以太网地址?48位的那个?
 
bbwininfo也可以,source e-mail给你了
 
you can use IPMan
 
TNCB,TADAPTERSTATUS 等等,都在哪个单元中呀
我该 uses 什么?
 
i find it :
uses Nb30

 
delphi/source/ 下 nb30.pas 自己找一下
我的机:
E:/ToolJ/Borland/Delphi5/Source/Rtl/Win/nb30.pas
 
多人接受答案了。
 
后退
顶部