工控编程吧
标题:
329上位机VC MFC获取本机的MAC地址
[打印本页]
作者:
qq263946146
时间:
2016-9-22 14:30
标题:
329上位机VC MFC获取本机的MAC地址
(, 下载次数: 2)
上传
点击文件名下载附件
获取本机的MAC地址
功能展示
在实际的上位机程序 开发中,时常需要在程序运行时获取MAC地址,作为一种标识使用,MAC地址是网卡的物理地址,是计算机通讯 的主要硬件设备,在生产网卡时MAC地址就已写入到硬件中,出现相同MAC地址的网上,概率几乎为0,所以MAC地址也常被用于标识网络中的计算机,我们当前例程演示如何 获得本机电脑MAC地址,效果如图,点击按钮就可将获得的MAC地址显示在编辑框中;
要点提示
通过Netbios()函数可以方便获取本机的MAC地址,函数原型UCHAR Netbios( PNCB pncb ); pncb是一个指向NCB类型指针
结构体为typedef struct _NCB { // ncb UCHAR ncb_command; UCHAR ncb_retcode; UCHAR ncb_lsn; UCHAR ncb_num; PUCHAR ncb_buffer; WORD ncb_length; UCHAR ncb_callname[NCBNAMSZ]; UCHAR ncb_name[NCBNAMSZ]; UCHAR ncb_rto; UCHAR ncb_sto; void (*ncb_post) (struct _NCB *); UCHAR ncb_lana_num; UCHAR ncb_cmd_cplt; UCHAR ncb_reserve[10]; HANDLE ncb_event; } NCB;
具体 结构体变量的介绍很多,可以参阅MSDN编程手册学习;
实现功能
1.新建基于对话框的应用程序
2.依照例程界面添加按钮<获取本机MAC地址>及编程框IDC_EDIT1,关联按钮的点击函数获得MAC地址
#include <nb30.h>
#pragma comment(lib,"netapi32.lib")
void CGkbc8Dlg::OnGet()
{
CString sMac;
NCB ncb;
ADAPTER_STATUS adapt;
memset(&ncb,0,sizeof(ncb));
ncb.ncb_command = NCBRESET;
Netbios(&ncb);//对网卡发送一个NCBRESET命令以便进行初始化
ncb.ncb_command = NCBASTAT;
strcpy((char *)ncb.ncb_callname,"*");
ncb.ncb_buffer = (unsigned char *)&adapt;// 指定返回的信息存放的变量
ncb.ncb_length = sizeof(adapt);
Netbios(&ncb);// 发送NCBASTAT命令以获取网卡的信息
sMac.Format( "%02X-%02X-%02X-%02X-%02X-%02X\n",
adapt.adapter_address[0],
adapt.adapter_address[1],
adapt.adapter_address[2],
adapt.adapter_address[3],
adapt.adapter_address[4],
adapt.adapter_address[5]);
SetDlgItemText(IDC_EDIT1,sMac);
}
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/1b955cff6d7754527af3df9af2b72825/0/0/w_19rstj1145.swf-albumId=6347990409-tvId=6347990409-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件 [weixinlianxi]1[/weixinlianxi]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4