1 頁 (共 1 頁)

[轉貼]如何取得網卡的MAC號

發表於 : 2008年 11月 27日, 17:42
tim
記得要 use nb30;

代碼: 選擇全部

     
    procedure Tform1.Button2Click(Sender: TObject); 
    Var 
      a: integer; 
      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//臨時變數 
      sResult : string; 
    Begin 
      // Initialize 
      //a指定多個網卡適配器中的哪一個0,1,2... 
      a:=0; 
      sResult := ''; 
      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); 
        sResult := strTemp; 
      Finally 
      End; 
      showmessage(sresult); 
    end;