VC实现获取本机MAC地址的方法

 更新时间:2014年07月23日 10:33:16   投稿:shichen2014  
这篇文章主要介绍了VC实现获取本机MAC地址的方法,需要的朋友可以参考下

本文实例采用vc6.0运行环境,通过实例实现获得MAC地址的功能。

完整的实例代码如下:

#include "stdafx.h"
#include  <stdio.h>  
#include  <stdlib.h>  
#include  <httpext.h>  
#include  <windef.h>  
#include  <Nb30.h>

int getMAC(char * mac)   
{   
 NCB ncb;   
 typedef struct _ASTAT_   
 {
  ADAPTER_STATUS  adapt; 
  NAME_BUFFER  NameBuff  [30];   
 }ASTAT,  *  PASTAT;   
 ASTAT Adapter;   
  
 typedef struct _LANA_ENUM   
 {  //  le 
  UCHAR  length; 
  UCHAR  lana[MAX_LANA];   
 }LANA_ENUM  ;   
 LANA_ENUM lana_enum;   
  
 UCHAR uRetCode;   
 memset(&ncb, 0, sizeof(ncb));   
 memset(&lana_enum, 0, sizeof(lana_enum));   
  
 ncb.ncb_command = NCBENUM;   
 ncb.ncb_buffer = (unsigned char *)&lana_enum;   
 ncb.ncb_length = sizeof(LANA_ENUM);   
 uRetCode = Netbios(&ncb);   
 if(uRetCode != NRC_GOODRET)   
 return uRetCode;   
  
 for(int lana=0; lana<lana_enum.length; lana++)   
 {
  ncb.ncb_command = NCBRESET; 
  ncb.ncb_lana_num = lana_enum.lana[lana]; 
  uRetCode = Netbios(&ncb);  
  if(uRetCode == NRC_GOODRET) 
  break; 
 } 
 if(uRetCode != NRC_GOODRET)
  return uRetCode;   
  
 memset(&ncb, 0, sizeof(ncb)); 
 ncb.ncb_command = NCBASTAT; 
 ncb.ncb_lana_num = lana_enum.lana[0];
 strcpy((char*)ncb.ncb_callname, "*"); 
 ncb.ncb_buffer = (unsigned char *)&Adapter;
 ncb.ncb_length = sizeof(Adapter);
 uRetCode = Netbios(&ncb); 
 if(uRetCode != NRC_GOODRET)  
  return uRetCode;   
 sprintf(mac,"%02X-%02X-%02X-%02X-%02X-%02X",   
 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] 
 ); 
 return 0;  
 }

int main(int argc, char* argv[])
{
 char  mac[200];  
 getMAC(mac);  
 printf("  mac  :  %s  \n",mac);  
 
 return 0;
}

另外还需要注意:必须在project->Setting里添加库文件“netapi32.lib”。

相关文章

  • C语言实现快速排序算法

    C语言实现快速排序算法

    这篇文章主要为大家详细介绍了C语言实现快速排序算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • C语言形参和实参传值和传址详解刨析

    C语言形参和实参传值和传址详解刨析

    形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用,形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送
    2021-11-11
  • Qt中QtWebEngine加载本地网页跨域问题的总结

    Qt中QtWebEngine加载本地网页跨域问题的总结

    本文主要介绍了Qt中QtWebEngine加载本地网页跨域问题的总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • C语言中while与do-while的介绍与注意事项

    C语言中while与do-while的介绍与注意事项

    对于C语言中的while与do-while,相信很多都再熟悉不过了,最近在工作中就用到了,所以想着总结一下,方便自己或者有需要的朋友们参考借鉴,文中通过示例代码介绍的很详细,感兴趣的朋友们下面来一起学习学习吧。
    2016-10-10
  • Qt实现简易QQ聊天界面

    Qt实现简易QQ聊天界面

    这篇文章主要为大家详细介绍了Qt实现简易QQ聊天界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • C++动态规划之最长公子序列实例

    C++动态规划之最长公子序列实例

    这篇文章主要介绍了C++动态规划之最长公子序列,实例分析了C++求最长公子序列的相关技巧,是C++字符串操作的一个典型应用,需要的朋友可以参考下
    2015-04-04
  • 你知道C语言函数调用常用的2种方式吗

    你知道C语言函数调用常用的2种方式吗

    本篇博客会讲解C语言函数调用的2种方式,分别是:传值调用和传址调用。这2种函数调用方式有什么区别呢?为什么会有不同的效果呢?分别有哪些用途呢?下面就来一一展开
    2023-04-04
  • Visual studio setup.exe 安装vs2022报错的解决方案

    Visual studio setup.exe 安装vs2022报错的解决方案

    这篇文章主要介绍了Visual studio setup.exe 安装vs2022报错的解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • 使用C语言实现模糊搜索功能

    使用C语言实现模糊搜索功能

    本文所提到的模糊搜索是指输入不完整的关键词即可查询到对应的全部准确结果。下面小编通过实例代码给大家分享使用C语言实现模糊搜索功能,感兴趣的朋友一起看看吧
    2018-08-08
  • C++实现添加图片水印到PDF文档

    C++实现添加图片水印到PDF文档

    水印是显示在文档内容后面的淡色文字或图片,可以用于指示文档的状态(保密、草稿等),本文主要为大家介绍了如何使用 Spire.PDF for C++ 在 PDF 文档中添加图片水印,需要的可以参考下
    2023-11-11

最新评论