工控编程吧

标题: 上位机MFC如何获得本地计算机的MAC地址 [打印本页]

作者: qq263946146    时间: 2019-8-8 10:15
标题: 上位机MFC如何获得本地计算机的MAC地址
实现这个功能,我们可以借助微软的IPHLPAPI库可以添加按钮点击函数来调用下面代码查看效果


  1. #include <Nb30.h>
  2. #pragma comment(lib,"IPHLPAPI.LIB")
  3. #pragma comment(lib,"netapi32.lib ")

  4. void CGkbc8Dlg::OnButton2()
  5. {
  6.         LANA_ENUM num;
  7.         ADAPTER_STATUS status;

  8.         NCB ncb;

  9.         //发送NCBENUM命令,获得网卡的数量和每个网卡的编号
  10.         ncb.ncb_command = NCBENUM;
  11.         ncb.ncb_buffer = (UCHAR*)#
  12.         ncb.ncb_length = sizeof(LANA_ENUM);
  13.         Netbios(&ncb);

  14.         CString strText =_T("本地计算机的MAC地址:\n");
  15.         for (int n = 0; n < num.length; n++)
  16.         {
  17.                 //发送NCBRESET命令
  18.                 memset(&ncb, 0, sizeof(NCB));
  19.                 ncb.ncb_command = NCBRESET;
  20.                 ncb.ncb_lana_num = num.lana[n];
  21.                 Netbios(&ncb);

  22.                 //发送NCBASTAT命令,获得每个网卡的状态
  23.                 memset(&ncb, 0, sizeof(NCB));
  24.                 ncb.ncb_command = NCBASTAT;
  25.                 ncb.ncb_lana_num = num.lana[n];
  26.                 memset(ncb.ncb_callname, '*', 1);
  27.                 ncb.ncb_buffer = (UCHAR*)&status;
  28.                 ncb.ncb_length = sizeof(ADAPTER_STATUS);
  29.                 Netbios(&ncb);

  30.                 //获得每个网卡的MAC地址
  31.                 CString strTemp = _T("");
  32.                 strTemp.Format("%02X-%02X-%02X-%02X-%02X-%02X\n",
  33.                         status.adapter_address[0],
  34.                         status.adapter_address[1],
  35.                         status.adapter_address[2],
  36.                         status.adapter_address[3],
  37.                         status.adapter_address[4],
  38.                         status.adapter_address[5]);
  39.                 strText += strTemp;
  40.         }
  41.         AfxMessageBox(strText);
  42. }
复制代码
(, 下载次数: 0)