//获取网卡MAC地址===============================================================
procedure CvtInt;
asm
        OR      CL,CL
        JNZ     @CvtLoop
@C1:    OR      EAX,EAX
        JNS     @C2
        NEG     EAX
        CALL    @C2
        MOV     AL,'-'
        INC     ECX
        DEC     ESI
        MOV     [ESI],AL
        RET
@C2:    MOV     ECX,10

@CvtLoop:
        PUSH    EDX
        PUSH    ESI
@D1:    XOR     EDX,EDX
        DIV     ECX
        DEC     ESI
        ADD     DL,'0'
        CMP     DL,'0'+10
        JB      @D2
        ADD     DL,('A'-'0')-10
@D2:    MOV     [ESI],DL
        OR      EAX,EAX
        JNE     @D1
        POP     ECX
        POP     EDX
        SUB     ECX,ESI
        SUB     EDX,ECX
        JBE     @D5
        ADD     ECX,EDX
        MOV     AL,'0'
        SUB     ESI,EDX
        JMP     @z
@zloop: MOV     [ESI+EDX],AL
@z:     DEC     EDX
        JNZ     @zloop
        MOV     [ESI],AL
@D5:
end;

function IntToHex(Value: Integer; Digits: Integer): string;
asm
        CMP     EDX, 32        // Digits < buffer length?
        JBE     @A1
        XOR     EDX, EDX
@A1:    PUSH    ESI
        MOV     ESI, ESP
        SUB     ESP, 32
        PUSH    ECX            // result ptr
        MOV     ECX, 16        // base 16     EDX = Digits = field width
        CALL    CvtInt
        MOV     EDX, ESI
        POP     EAX            // result ptr
        CALL    System.@LStrFromPCharLen
        ADD     ESP, 32
        POP     ESI
end;

function MacAddress: string; //获取MAC信息
var      
  Lib: Cardinal;
  Func: function(GUID: PGUID): Longint; stdcall;       
  GUID1, GUID2: TGUID;       
begin
  Result :='';       
  Lib := LoadLibrary('rpcrt4.dll');
  if Lib <> 0 then      
  begin
    @Func := GetProcAddress(Lib, 'UuidCreateSequential');
    if Assigned(Func) then
    begin      
      if (Func(@GUID1) = 0) and      
        (Func(@GUID2) = 0) and      
        (GUID1.D4[2] = GUID2.D4[2]) and      
        (GUID1.D4[3] = GUID2.D4[3]) and      
        (GUID1.D4[4] = GUID2.D4[4]) and      
        (GUID1.D4[5] = GUID2.D4[5]) and      
        (GUID1.D4[6] = GUID2.D4[6]) and      
        (GUID1.D4[7] = GUID2.D4[7]) then      
      begin      
        Result :=       
         IntToHex(GUID1.D4[2], 2) + '-' +
         IntToHex(GUID1.D4[3], 2) + '-' +
         IntToHex(GUID1.D4[4], 2) + '-' +       
         IntToHex(GUID1.D4[5], 2) + '-' +       
         IntToHex(GUID1.D4[6], 2) + '-' +
         IntToHex(GUID1.D4[7], 2);       
      end;       
    end;       
    FreeLibrary(Lib);       
  end;       
end;

Delphi自定义获取网卡MAC地址过程相关推荐

  1. Python 获取 网卡 MAC 地址

    /************************************************************************ Python 获取 网卡 MAC 地址* 说明:* ...

  2. php获取网卡mac地址吗,php获取网卡MAC地址步骤详解

    这次给大家带来php获取网卡MAC地址步骤详解,php获取网卡MAC地址的注意事项有哪些,下面就是实战案例,一起来看一下. php获取网卡的物理地址,即mac地址.<?php /** 获取网卡的 ...

  3. 通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号

    开发语言:C/C++ 支持平台:Windows 实现功能: 通过WMI获取网卡MAC地址.硬盘序列号.主板序列号.CPU ID.BIOS序列号 下载地址: WMI_DeviceQuery.zip 版本 ...

  4. ioctl(sock, SIOCGIFHWADDR, ifr)获取网卡mac地址

    ioctl(sock, SIOCGIFHWADDR, &ifr) 获取网卡mac地址 ioctl(sock, SIOCGIFINDEX, &ifr)获取网卡接口地址 为什么我bind时 ...

  5. android 获取网卡mac_android获取网卡mac地址信息

    由于android版本不一样获取网卡mac地址的方式也不一样,比较麻烦,但是java sdk里面的函数是可以获取里面的网卡内容. 代码如下: /** * 获取网络的mac地址 * * @return ...

  6. java通过ip获取网卡MAC地址

    参考:http://www.jb51.net/article/73882.htm /** * 获取MAC地址 * @author * 2011-12 */ public static class Ge ...

  7. DELPHI获取网卡MAC地址 转

    1.通过IP取MAC地址 uses WinSock; Function sendarp(ipaddr:ulong; temp:dword; ulmacaddr:pointer; ulmacaddrle ...

  8. DELPHI获取网卡MAC地址

    1.通过IP取MAC地址 uses WinSock; Function sendarp(ipaddr:ulong; temp:dword; ulmacaddr:pointer; ulmacaddrle ...

  9. 关于wmi获取网卡mac地址重复的分析

    现象:如图在部分电脑上获取ip和MAC地址对应关系时,界面显示部分电脑发现重复ip和mac 分析:用WMI Explorer查看时,有一个设备Microsoft TV/video connection ...

最新文章

  1. Angular 4+ HttpClient
  2. java钢琴键_javapiano Java Piano模拟钢琴效果的完整源码 联合开发网 - pudn.com
  3. 100本名著浓缩成了100句话
  4. html网页自动铺满屏幕,如何使HTML元素的区域铺满全屏
  5. LinkedHashMap 的理解以及借助其实现LRU
  6. 计算机数媒专业优势,27所院校新开设数字媒体艺术专业,“数媒”专业为什么这么火?...
  7. react jest测试_如何使用React测试库和Jest开始测试React应用
  8. cmd oracle 连接实例_C#连接Oracle数据库的实例方法
  9. 动态路由选择协议(二)距离矢量路由选择协议
  10. 资源放送丨《OGG日常运维及故障处理》PPT视频
  11. 关于SQL Server将一列的多行内容拼接成一行的问题讨论
  12. 京东程序员回应“被猝死”;淘宝特价版已提交微信小程序;苹果 M1 单核性能勇超 Intel 11 代 i7...
  13. Java设计模式超详细
  14. 自我检讨书(我与电脑)
  15. LeetCode.714.买卖股票的最佳时机含手续费
  16. amcharts的使用介绍
  17. html5 jq点赞功能,jQuery实现简单的点赞效果
  18. 强化学习经典model-free方法总结
  19. ModelSim 实用知识:优化,SDF,覆盖率
  20. 64位 regsrv win10_win10 专业版 64位 系统 频繁蓝屏,MEMORY_MANAGEMENT - Microsoft Community...

热门文章

  1. 练习五:整数顺序排列
  2. linux下文件以及目录权限修改(摘抄)
  3. 如何让你的百万级SQL运行得更快 else
  4. weblogic常见漏洞
  5. 【Python数据挖掘课程】九.回归模型LinearRegression简单分析氧化物数据
  6. [C/C++基础知识] main函数的参数argc和argv
  7. Python之调用JS的方式
  8. iOS逆向之Protocol Witness Table的汇编实现原理
  9. OpenGL ES之GLSL自定义着色器编程实现粒子效果
  10. OpenGL ES之GLSL渲染图片显示的整体流程