请问各位大吓,DELPHI7怎样能最简单的读取网卡物理地址号码吗,谢谢!!!!

解决方案 »

  1.   

    http://www.moon-soft.com/program/doc/readelite176504.htm
      

  2.   

    还有一个方法就是用命令行
    ipconfig /all
    (你可用ipconfig /all > temp,然后打开temp文件读到mac地址)
      

  3.   

    function GetMAC(CardNo: integer): string;
    //CardNo指定多个网卡适配器中的哪一个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;
      

  4.   

    function TForm1.GetMac(SendIP: String): String;
    var
      myip:ulong;
      mymac:array[0..5] of byte;
      mymaclength:ulong;
    begin
      myip:=inet_addr(PChar(SendIP));
      mymaclength:=length(mymac);
      sendarp(myip,0,@mymac,@mymaclength);
      GetMac := format('%2.2x-%2.2x-%2.2x-%2.2x-%2.2x-%2.2x',[mymac[0],mymac[1],mymac[2],mymac[3],mymac[4],mymac[5]]);
    end;//-------------------------------------------------------------------------------
    //用一个调用给他就可以了
      

  5.   

    感谢Keiy提供的网址,又学到一手belllab提供的方法是完全一样的,不过注意在Uses里面加上Nb30,并且把代码里面的 LANAENUM.lana[a]替换成 LANAENUM.lana[CardNo]即可
      

  6.   

    另一种方法,是我用WMI实现的,不过会返回所有网卡的MAC.要过滤一下就可以了:
    http://community.csdn.net/Expert/topic/4481/4481498.xml?temp=9.518069E-02