如何用MFC获取本机的MAC地址

ymdynhz 2008-10-30 12:17:36
如题,谢谢
...全文
557 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
MilanSpiRiT 2008-11-02
  • 打赏
  • 举报
回复
1楼给的是控制台代码,你把main函数改个名,存成一个cpp,就可以用你自己的MFC程序调用这个函数啦
ymdynhz 2008-11-02
  • 打赏
  • 举报
回复
代码运行有错误啊,能不能在mfc中有啊?
stuarts740 2008-11-02
  • 打赏
  • 举报
回复
CString strIP,strGateWay,strSubnetMask,strMac;
u_char pMac[6];
PIP_ADAPTER_INFO adp = NULL;
ULONG uLong=0;
//为适配器申请内存
::GetAdaptersInfo(adp,&uLong);
adp = (PIP_ADAPTER_INFO)::GlobalAlloc(GPTR,uLong);

//取得本地适配器结构信息
if(::GetAdaptersInfo(adp,&uLong) == ERROR_SUCCESS)
{
if(adp != NULL)
{
//strMacAdd.Format("%s",adp->Address);
memcpy(pMac,adp->Address,6);
strMac.Format("%02X-%02X-%02X-%02X-%02X-%02X",pMac[0],pMac[1],pMac[2],pMac[3],pMac[4],pMac[5]);
strGateWay.Format("%s",adp->GatewayList.IpAddress.String);// 网关
strIP.Format("%s",adp->IpAddressList.IpAddress.String);//IP
strSubnetMask.Format("%s",adp->IpAddressList.IpMask.String);//子网掩码
strErrorMsg = "获取网络配置信息成功";
}
}

上面是经过测试的完整的代码
stuarts740 2008-11-02
  • 打赏
  • 举报
回复
使用GetAdaptersInfo
qt_freelancer 2008-11-02
  • 打赏
  • 举报
回复
调用winsocket函数就可以了
baihacker 2008-10-30
  • 打赏
  • 举报
回复

http://www.cppblog.com/urgentmind/archive/2006/10/09/13493.html
#include < windows.h >
#include < wincon.h >
#include < stdlib.h >
#include < stdio.h >
#include < time.h >

typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [ 30 ];
}ASTAT, * PASTAT;

ASTAT Adapter;

void main ( void )
{
NCB Ncb;
UCHAR uRetCode;
char NetName[ 50 ];
LANA_ENUM lenum;
int i;
memset( & Ncb, 0 , sizeof (Ncb) );
Ncb.ncb_command = NCBENUM;
Ncb.ncb_buffer = (UCHAR * ) & lenum;
Ncb.ncb_length = sizeof (lenum);
uRetCode = Netbios( & Ncb );
printf( " The NCBENUM return code is: 0x%x \n " , uRetCode );
for (i = 0 ; i < lenum.length ;i ++ )
{
memset( & Ncb, 0 , sizeof (Ncb) );
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = lenum.lana[i];
uRetCode = Netbios( & Ncb );
printf( " The NCBRESET on LANA %d return code is: 0x%x \n " ,
lenum.lana[i], uRetCode );
memset( & Ncb, 0 , sizeof (Ncb) );
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = lenum.lana[i];
strcpy(( char * )Ncb.ncb_callname, " * " );
Ncb.ncb_buffer = (unsigned char * ) & Adapter;
Ncb.ncb_length = sizeof (Adapter);
uRetCode = Netbios( & Ncb );
printf( " The NCBASTAT on LANA %d return code is: 0x%x \n " ,
lenum.lana[i], uRetCode );
if ( uRetCode == 0 )
{
printf( " The Ethernet Number on LANA %d is:%02x-%02x-%02x-%02x-%02x-%02x\n " ,lenum.lana[i],
     Adapter.adapt.adapter_address[ 0 ],
     Adapter.adapt.adapter_address[ 1 ],
     Adapter.adapt.adapter_address[ 2 ],
     Adapter.adapt.adapter_address[ 3 ],
     Adapter.adapt.adapter_address[ 4 ],
     Adapter.adapt.adapter_address[ 5 ]);
}
}
 system( " PAUSE " );
}
summericeyl 2008-10-30
  • 打赏
  • 举报
回复
楼上的代码不错啊,收藏了

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧