在Delphi7内取网卡MAC地址

本文介绍了一种使用Delphi编写的函数,通过NetBIOS API来获取计算机中指定网卡的MAC地址。该函数首先枚举所有可用的网卡,然后重置并获取指定网卡的状态,最后将得到的MAC地址转换为字符串形式。

function GetMAC(CardNo: integer): string;
//CardNo指定多个网卡适配器中的哪一个0,1,2...
var
  NCB: TNCB; 
// Netbios control block file://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[intIdx]), 2);
    Result :
= strTemp;
   
finally
   end;
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

martian6125

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值