Delphi 获取网卡MAC

You must include the NB30 unit in your uses clause for this code to work.

uses
  NB30;

function GetAdapterInfo(Lana: Char): String;
var
  Adapter: TAdapterStatus;
  NCB: TNCB;
begin
  FillChar(NCB, SizeOf(NCB), 0);
  NCB.ncb_command := Char(NCBRESET);
  NCB.ncb_lana_num := Lana;
  if Netbios(@NCB) <> Char(NRC_GOODRET) then
  begin
    Result := 'mac not found';
    Exit;
  end;

  FillChar(NCB, SizeOf(NCB), 0);
  NCB.ncb_command := Char(NCBASTAT);
  NCB.ncb_lana_num := Lana;
  NCB.ncb_callname := '*';

  FillChar(Adapter, SizeOf(Adapter), 0);
  NCB.ncb_buffer := @Adapter;
  NCB.ncb_length := SizeOf(Adapter);
  if Netbios(@NCB) <> Char(NRC_GOODRET) then
  begin
    Result := 'mac not found';
    Exit;
  end;
  Result :=
    IntToHex(Byte(Adapter.adapter_address[0]), 2) + '-' +
    IntToHex(Byte(Adapter.adapter_address[1]), 2) + '-' +
    IntToHex(Byte(Adapter.adapter_address[2]), 2) + '-' +
    IntToHex(Byte(Adapter.adapter_address[3]), 2) + '-' +
    IntToHex(Byte(Adapter.adapter_address[4]), 2) + '-' +
    IntToHex(Byte(Adapter.adapter_address[5]), 2);
end;

function GetMACAddress: string;
var
  AdapterList: TLanaEnum;
  NCB: TNCB;
begin
  FillChar(NCB, SizeOf(NCB), 0);
  NCB.ncb_command := Char(NCBENUM);
  NCB.ncb_buffer := @AdapterList;
  NCB.ncb_length := SizeOf(AdapterList);
  Netbios(@NCB);
  if Byte(AdapterList.length) > 0 then
    Result := GetAdapterInfo(AdapterList.lana[0])
  else
    Result := 'mac not found';
end; 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Delphi中,想要获取Android设备上的网卡信息,可以通过使用Java的相关类和方法来实现。 首先,需要使用Java的反射机制来获取相关的类。可以通过使用`JNIClasses`单元来调用Java的类和方法。例如,通过`TJNetworkInterface`类可以获取到设备的网卡信息。 接下来,可以使用`getNetworkInterfaces`方法来获取所有的网卡接口。例如: ```delphi var NetworkInterfaces: JEnumeration; NetworkInterface: JNetworkInterface; begin NetworkInterfaces := TJNetworkInterface.JavaClass.getNetworkInterfaces; while NetworkInterfaces.hasMoreElements do begin NetworkInterface := TJNetworkInterface.Wrap(NetworkInterfaces.nextElement); // 对NetworkInterface进行操作,以获取网卡相关信息 ... end; end; ``` 通过遍历`NetworkInterfaces`获取到的网卡接口对象,可以获取到各个网卡的相关信息。例如,可以使用`getName`方法获取网卡的名称,使用`getDisplayName`方法获取网卡的显示名称,使用`getHardwareAddress`方法获取网卡的硬件地址等。 ```delphi var Name: JString; DisplayName: JString; HardwareAddress: TJavaArray<Byte>; begin Name := NetworkInterface.getName; DisplayName := NetworkInterface.getDisplayName; HardwareAddress := NetworkInterface.getHardwareAddress; // 对获取到的信息进行操作,如输出到控制台或显示在应用界面中 ... end; ``` 通过上述方法,可以在Delphi获取到Android设备上的网卡信息,并进行相应操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值