bool GetMacAddress(CString &LanMAC)
{
#define MAX_ADAPTER_NAME_LENGTH 256
#define MAX_ADAPTER_DESCRIPTION_LENGTH 128
#define MAX_ADAPTER_ADDRESS_LENGTH 8
typedef struct _NET_IP_ADDRESS_STRING{
char String[16];
} NET_IP_ADDRESS_STRING, *PNET_IP_ADDRESS_STRING, NET_IP_MASK_STRING, *PNET_IP_MASK_STRING;
typedef struct _NET_IP_ADDR_STRING {
struct _NET_IP_ADDR_STRING* Next;
NET_IP_ADDRESS_STRING IpAddress;
NET_IP_MASK_STRING IpMask;
DWORD Context;
} NET_IP_ADDR_STRING, *PNET_IP_ADDR_STRING;
typedef struct _NET_IP_ADAPTER_INFO {
struct _NET_IP_ADAPTER_INFO* Next;
DWORD ComboIndex;
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
UINT AddressLength;
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
DWORD Index;
UINT Type;
UINT DhcpEnabled;
PNET_IP_ADDR_STRING CurrentIpAddress;
NET_IP_ADDR_STRING IpAddressList;
NET_IP_ADDR_STRING GatewayList;
NET_IP_ADDR_STRING DhcpServer;
BOOL HaveWins;
NET_IP_ADDR_STRING PrimaryWinsServer;
NET_IP_ADDR_STRING SecondaryWinsServer;
time_t LeaseObtained;
time_t LeaseExpires;
} NET_IP_ADAPTER_INFO, *PNET_IP_ADAPTER_INFO; // LanMAC.RemoveAll(); HINSTANCE hLib = 0;
if (hLib = LoadLibrary(_T("iphlpapi.dll"))) //加载动态库
{
DWORD(WINAPI*pGetAdaptersInfo) (PNET_IP_ADAPTER_INFO, PULONG) =
(DWORD(WINAPI*) (PNET_IP_ADAPTER_INFO, PULONG))GetProcAddress(hLib, "GetAdaptersInfo");//获取地址
if (pGetAdaptersInfo != 0)
{
DWORD AdapterInfoSize = 0;
if (pGetAdaptersInfo(0, &AdapterInfoSize) == ERROR_BUFFER_OVERFLOW) //获取长度
{
PNET_IP_ADAPTER_INFO pAdapterInfo = (PNET_IP_ADAPTER_INFO) new BYTE[AdapterInfoSize]; //分配内存 if (pGetAdaptersInfo(pAdapterInfo, &AdapterInfoSize) == ERROR_SUCCESS) //获取信息
{
PNET_IP_ADAPTER_INFO pAdapter = pAdapterInfo;
while (pAdapter)
{
CString strMac;
strMac.Format(_T("%02X-%02X-%02X-%02X-%02X-%02X"),
pAdapter->Address[0], pAdapter->Address[1], pAdapter->Address[2],
pAdapter->Address[3], pAdapter->Address[4], pAdapter->Address[5]);
LanMAC.Format(strMac); pAdapter = pAdapter->Next; //下一个区域
}
} delete[] pAdapterInfo; //释放内存
}
} FreeLibrary(hLib); //释放库 }
return true;
}

最新文章

  1. Extjs扩展:封装Plupload
  2. phpcms v9联动菜单的调用方法及get_linkage函数简单过程
  3. 注意Activator.CreateInstance两个重载方法的性能
  4. 【Shell脚本学习11】Shell注释
  5. web.xml文件中配置ShallowEtagHeaderFilter需注意的问题
  6. Nyoj 城市平乱(图论)
  7. js实现多张图片同时放大缩小相对位置不变
  8. 在linux系统中I/O 调度的选择
  9. RF自动化测试
  10. 图片处理服务 ImageMagick 的安装和使用
  11. Lucene的简单用法
  12. SQL server 数据库的索引和视图、存储过程和触发器
  13. laravel 分类的列表查询
  14. SQL2005中的事务与锁定(九)-(1)- 转载
  15. async与await
  16. 3D游戏与计算机图形学中的数学方法-视截体
  17. STM32CubeMX新建工程+基本IO配置过程
  18. Servlet开发-----基础及MVC设计模式
  19. Logstash Reference Getting started with Logstash
  20. 解决ftp无法连接登录linux的办法

热门文章

  1. 芯片下载相关-CH32系列芯片下载方式汇总及教程
  2. Emacs Client启动方式,在WSL像VIM一样操作
  3. Linux 安装 CentOS7
  4. P19_数据绑定
  5. 【Vue】计算属性 监听属性 组件通信 动态组件 插槽 vue-cli脚手架
  6. 2 .NET Core笔试题
  7. JavaScript基础练习
  8. Apache Hudi 流转批 场景实践
  9. Makefile常用命令
  10. vue的异步组件