⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.~pas

📁 获取多网卡的MAC的源码
💻 ~PAS
字号:
//加入nb3.pas单元
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls,nb30;

type
  TfrmMain = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Label5: TLabel;
    Edit5: TEdit;
    Label6: TLabel;
    Edit6: TEdit;
    Label7: TLabel;
    Edit7: TEdit;
    Label8: TLabel;
    Edit8: TEdit;
    Label9: TLabel;
    Edit9: TEdit;
    Label10: TLabel;
    Edit10: TEdit;
    Function NBGetAdapterAddress(adapterNum:integer):String;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.DFM}


function TfrmMain.NBGetAdapterAddress(adapterNum: integer): String;
//adapter00为指定的网卡适配器
Var
  NCB:TNCB; // NetBios控制块
  ADAPTER : TADAPTERSTATUS; // 获取网卡状态
  LANAENUM : TLANAENUM; // Netbios lana
  intIdx : Integer; // 临时变量
  cRC : Char; // NetBios返回值
  strTemp : String; // 临时变量

Begin
  Result := '';
  Try
    // 清空控制块
    ZeroMemory(@NCB, SizeOf(NCB));
    NCB.ncb_command:=Chr(NCBENUM);
    cRC := NetBios(@NCB);

    // 重新设置enum命令
    NCB.ncb_buffer := @LANAENUM;
    NCB.ncb_length := SizeOf(LANAENUM);
    cRC := NetBios(@NCB);
    If Ord(cRC)<>0 Then
      exit;
    // 重新设定网卡
    ZeroMemory(@NCB, SizeOf(NCB));
    NCB.ncb_command := Chr(NCBRESET);
    NCB.ncb_lana_num := LANAENUM.lana[adapterNum];
    cRC := NetBios(@NCB);
    If Ord(cRC)<>0 Then
      exit;
    // 获取网卡地址
    ZeroMemory(@NCB, SizeOf(NCB));
    NCB.ncb_command := Chr(NCBASTAT);
    NCB.ncb_lana_num := LANAENUM.lana[adapterNum];
    StrPCopy(NCB.ncb_callname, '*');
    NCB.ncb_buffer := @ADAPTER;
    NCB.ncb_length := SizeOf(ADAPTER);
    cRC := NetBios(@NCB);
    // 将获得信息转换为字符串
    strTemp := '';
    For intIdx := 0 To 5 Do
      strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[intIdx]),2);
    Result := strTemp;
  Finally
  End;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  Edit1.Text:=NBGetAdapterAddress(0);
  Edit2.Text:=NBGetAdapterAddress(1);
  Edit3.Text:=NBGetAdapterAddress(2);
  Edit4.Text:=NBGetAdapterAddress(3);
  Edit5.Text:=NBGetAdapterAddress(4);
  Edit6.Text:=NBGetAdapterAddress(5);
  Edit7.Text:=NBGetAdapterAddress(6);
  Edit8.Text:=NBGetAdapterAddress(7);
  Edit9.Text:=NBGetAdapterAddress(8);
  Edit10.Text:=NBGetAdapterAddress(9);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -