getmacfrm.pas
来自「关于利用DELPHI来进行企业级方案解决的著作的附书源码」· PAS 代码 · 共 89 行
PAS
89 行
unit GetMacFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Nb30, NetBios;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label0: TLabel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
function GetMACAddress(LanaID:Integer;addr:PInteger):Integer;external 'utils.dll';
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
MacAddress:Array[0..5] of Integer;
Address:PInteger;
begin
Address:=PInteger(@MacAddress);
if GetMACAddress(0,Address)=0 then
begin
Label0.Caption:=IntToStr(MacAddress[0]);
Label1.Caption:=IntToStr(MacAddress[1]);
Label2.Caption:=IntToStr(MacAddress[2]);
Label3.Caption:=IntToStr(MacAddress[3]);
Label4.Caption:=IntToStr(MacAddress[4]);
Label5.Caption:=IntToStr(MacAddress[5]);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Ncb:NCB;
URetCode:UCHAR;
NetName:Array[50] of char;
Adapter:ASTAT;
begin
memset(&ncb,0,sizeof(Ncb));
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = LANAID;
uRetCode = Netbios( &Ncb );
memset( &Ncb, 0, sizeof (Ncb) );
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = LANAID;
strcpy( Ncb.ncb_callname, "* " );
Ncb.ncb_buffer = (char *) &Adapter;
Ncb.ncb_length = sizeof(Adapter);
uRetCode = Netbios( &Ncb );
if ( uRetCode == 0 )
begin
addr[0]= Adapter.adapt.adapter_address[0];
addr[1]= Adapter.adapt.adapter_address[1];
addr[2]= Adapter.adapt.adapter_address[2];
addr[3]= Adapter.adapt.adapter_address[3];
addr[4]= Adapter.adapt.adapter_address[4];
addr[5]= Adapter.adapt.adapter_address[5];
end;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?