发信人: teleme(PassWord) 
整理人: teleme(2001-05-29 17:03:33), 站内信件
 | 
 
 
另外一个
 
 //加入nb30.pas单元
 unit Unit1;
 
 interface
 
 uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls, nb30;<<------------nb30单元要包含
 
 type
    TForm1 = class(TForm)
       Edit1: TEdit;
       Button1: TButton;
       Label1: TLabel;
       procedure Button1Click(Sender: TObject);
       function NBGetAdapterAddress(a: integer): string;
    private
       { Private declarations }
 
    public
       { Public declarations }
    end;
 
 var
    Form1: TForm1;
 
 implementation
 
 {$R *.DFM}
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
    Showmessage('您的第' + edit1.text + '个适配器的MAC地址为' + NBGetAdapterAddress(StrtoInt(Edit1.Text)));
 end;
 
 function TForm1.NBGetAdapterAddress(a: integer): string;
 //a指定多个网卡适配器中的哪一个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;
 
 end.
 
 
  ---- 忙,忙,忙。 
 忙,忙,忙。
 忙,忙,忙。
 唉 
 再忙也得告诉我
    | 
 
 
 |