设为首页 加入收藏

TOP

输出电脑的所有Mac地址
2014-11-11 08:00:08 】 浏览:5238
Tags:输出 电脑 所有 Mac 地址

  #include "stdafx.h"


  #include


  #include


  #include


  #include "windows.h"


  using namespace std;


  //命令行输出缓冲大小


  const long MAX_COMMAND_SIZE = 10000;


  //获取MAC命令行


  char szFetCmd[] = "ipconfig /all";


  //网卡MAC地址的前导信息


  const string str4Search = "Physical Address. . . . . . . . . : ";


  //用命令行方式获取网卡MAC地址


  BOOL GetMacByCmd(char *lpszMac);


  ////////////////////////////////////////////////////////////////////////////


  // 函数名: GetMacByCmd(char *lpszMac)


  // 参数:


  // 输入: void


  // 输出: lpszMac,返回的MAC地址串


  // 返回值:


  // TRUE: 获得MAC地址。


  // FALSE: 获取MAC地址失败。


  // 过程:


  // 1. 创建一个无名管道。


  // 2. 创建一个IPCONFIG 的进程,并将输出重定向到管道。


  // 3. 从管道获取命令行返回的所有信息放入缓冲区lpszBuffer。


  // 4. 从缓冲区lpszBuffer中获得抽取出MAC串。


  //


  // 提示:可以方便的由此程序获得IP地址等其他信息。


  // 对于其他的可以通过其他命令方式得到的信息只需改变strFetCmd 和


  // str4Search的内容即可。


  ///////////////////////////////////////////////////////////////////////////


  BOOL GetMacByCmd(char *lpszMac)


  {


  //初始化返回MAC地址缓冲区


  memset(lpszMac, 0x00, sizeof(lpszMac));


  BOOL bret;


  SECURITY_ATTRIBUTES sa;


  HANDLE hReadPipe,hWritePipe;


  sa.nLength = sizeof(SECURITY_ATTRIBUTES);


  sa.lpSecurityDescriptor = NULL;


  sa.bInheritHandle = TRUE;


  //创建管道


  bret = CreatePipe(&hReadPipe, &hWritePipe, &sa, 0);


  if(!bret)


  {


  return FALSE;


  }


  //控制命令行窗口信息


  STARTUPINFO si;


  //返回进程信息


  PROCESS_INFORMATION pi;


  si.cb = sizeof(STARTUPINFO);


  GetStartupInfo(&si);


  si.hStdError = hWritePipe;


  si.hStdOutput = hWritePipe;


  si.wShowWindow = SW_HIDE; //隐藏命令行窗口


  si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇在MFC程序中使用XML文件配置工具栏 下一篇VC获取系统时间方法

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目