• 在Delphi7内取网卡MAC地址


    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;

  • 相关阅读:
    redis的两种备份方式
    Vue—事件修饰符
    css3实现颤动的动画
    初学者可能不知道的vue技巧
    使用slot-scope复制vue中slot内容
    pre-commit钩子,代码质量检查
    爬虫可视化点选配置工具之获取鼠标点选元素
    Vue源码探究-事件系统
    使用electron实现百度网盘悬浮窗口功能!
    electron实现qq快捷登录!
  • 原文地址:https://www.cnblogs.com/martian6125/p/9631491.html
Copyright © 2020-2023  润新知