Delphi获取网卡MAC地址

//MAC地址
function GetPhysicalAddress: string;
//0指定多个网卡适配器中的第一个,你可以改这个参数
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[0];
      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[0];
      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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值