当前位置:首页 > 芯闻号 > 充电吧
[导读]GetPCInfo类头文件:  1 #pragma once  2 #include3 #include4 #include5 #include6 #include7 #pragma comment(

GetPCInfo类头文件:

 

 1 #pragma once
 2 #include3 #include4 #include5 #include6 #include7 #pragma comment(lib, "IPHLPAPI.lib")
 8 #pragma comment(lib, "ws2_32.lib")
 9 //电脑相关信息的结构体
10 typedef struct MAC_INFO
11 {
12     char ipAddr[16];//IP地址
13     char macAddr[32];//MAC地址
14     char hostName[MAX_PATH];//主机名
15     char domain[MAX_PATH];//域名
16     char time[20];//时间
17 
18 }MacInfo;
19 class GetPCInfos
20 {
21 public:
22     GetPCInfos();
23     ~GetPCInfos(void);
24     MacInfo GetPcInfo();
25     void GetIpAddr();//获取IP地址
26     void GetHostName();//获取主机名
27     void GetDomain();//获取域名
28     void GetTime();//获取当前时间
29     void GetMacAddr();//获取Mac地址
30     bool SaveFile();//保存文件
31     std::string GetFilePath();//获取保存文件路径
32     bool GetMacByGetAdaptersInfo(char* macOut);//获取Mac地址
33 private:
34     MacInfo m_MacInfo;//电脑信息
35     std::string m_FileName;//文件名
36     WSADATA wsa; 
37     WORD wVersionRequested; 
38 };

 

CPP文件

 

  1 #include "StdAfx.h"
  2 #include "GetPCInfos.h"
  3 
  4 GetPCInfos::GetPCInfos()
  5 {        
  6     memset(m_MacInfo.ipAddr, '', 16);
  7     memset(m_MacInfo.macAddr, '', 32);
  8     memset(m_MacInfo.hostName, '', MAX_PATH);
  9     memset(m_MacInfo.domain, '' ,20);
 10     memset(m_MacInfo.time, '', 20);
 11     if(WSAStartup(wVersionRequested , &wsa) !=0 )
 12         AfxMessageBox("加载套接字库失败");
 13 
 14 }
 15 
 16 GetPCInfos::~GetPCInfos(void)
 17 {
 18 }
 19 
 20 /*****************************************
 21 函 数 名:GetPcInfo
 22 功能描述:获取电脑信息
 23 输      入:无
 24 输      出:无
 25 返 回 值:MacInfo结构体。保存有电脑相关信息
 26 *****************************************/
 27 MacInfo GetPCInfos::GetPcInfo()
 28 {
 29     GetIpAddr();
 30     GetMacAddr();
 31     GetHostName();
 32     GetDomain();
 33     GetTime();
 34     wVersionRequested = MAKEWORD( 2, 0 );  
 35     return m_MacInfo;
 36 }
 37 
 38 /*****************************************
 39 函 数 名:GetHostName
 40 功能描述:获取主机名
 41 输      入:无
 42 输      出:无
 43 返 回 值:void
 44 *****************************************/
 45 void GetPCInfos::GetHostName()
 46 {
 47     struct hostent* pHost;
 48     pHost = gethostbyname("");
 49 
 50     std::string host;
 51     host += pHost->h_name;
 52     std::string domain=host.substr(0, host.find_first_of('.'));
 53 
 54     memcpy(m_MacInfo.hostName, domain.c_str(), MAX_PATH);
 55 
 56 }    
 57 
 58 /*****************************************
 59 函 数 名:GetDomain
 60 功能描述:获取域名
 61 输      入:无
 62 输      出:无
 63 返 回 值:void
 64 void GetPCInfos::GetDomain()
 65 {
 66     struct hostent * pHost;
 67     pHost = gethostbyname("");
 68     //pHost->h_name存有完整的域名信息xx.soft.com
 69 
 70     std::string host;
 71     host += pHost->h_name;
 72     std::string domain=host.substr(host.find_first_of('.')+1, host.size()-host.find_first_of('.')-1);//获取第一个·后的域名
 73     
 74     memcpy(m_MacInfo.domain, domain.c_str(), MAX_PATH);
 75 }
 76 
 77 /*****************************************
 78 函 数 名:GetIpAddr
 79 功能描述:获取电脑IP地址
 80 输      入:无
 81 输      出:无
 82 返 回 值:void
 83 void GetPCInfos::GetIpAddr()
 84 {
 85     
 86     struct hostent  *hp;
 87     struct in_addr  sa;
 88     char  *buf ;
 89     hp = gethostbyname("");//获取主机名
 90     if (hp != NULL)
 91     {
 92         memcpy (&sa, hp->h_addr_list[0],hp->h_length);//hp->addr_list[0]为hostent结构保存的多IP主机的第一个完整域名信息
 93         buf = inet_ntoa(sa);//转换成字符串形式的IP地址
 94         memcpy(m_MacInfo.ipAddr, buf, sizeof(m_MacInfo.ipAddr));
 95     }    
 96 }
 97 
 98 /*****************************************
 99 函 数 名:GetMacAddr
100 功能描述:获取MAC地址
101 输      入:无
102 输      出:无
103 返 回 值:void
104 *****************************************/
105 void GetPCInfos::GetMacAddr()
106 {
107     GetMacByGetAdaptersInfo(m_MacInfo.macAddr);
108 }
109 
110 /*****************************************
111 函 数 名:GetTime
112 功能描述:获取当前时间
113 输      入:无
114 输      出:无
115 返 回 值:void
116 *****************************************/
117 void GetPCInfos::GetTime()
118 {
119     CTime currentTime=CTime::GetCurrentTime();
120     CString currentTimeStr;
121 
122     currentTimeStr.Format(_T("%04d/%02d/%02d %02d:%02d:%02d"),
123         currentTime.GetYear(),
124         currentTime.GetMonth(),
125         currentTime.GetDay(),
126         currentTime.GetHour(),
127         currentTime.GetMinute(),
128         currentTime.GetSecond());
129 
130     memcpy(m_MacInfo.time, currentTimeStr.GetBuffer(0), 20);
131     currentTimeStr.ReleaseBuffer();
132 }
133 
134 /*****************************************
135 函 数 名:SaveFile
136 功能描述:将获取的电脑信息保存到文件
137 输      入:无
138 输      出:无
139 返 回 值:bool
140 bool GetPCInfos::SaveFile()
141 {
142     char chTempPath[MAX_PATH] = {0};
143     BOOL b= SHGetSpecialFolderPath(NULL,chTempPath,    CSIDL_INTERNET_CACHE,0);//获取特殊路径,此处获取的是ie临时文件目录。没什么用
144 
145     CString strTempPath(chTempPath);
146     std::string tempFile;
147     strTempPath += TEXT("\");
148     tempFile=strTempPath;
149     std::string strNull;
150                 m_FileName += "MAC_" + strNull + m_MacInfo.macAddr + strNull + ".txt";
151     std::ofstream fWrite(m_FileName.c_str(),ios::binary);//,std::ios_base::app
152 
153     if (!fWrite)
154     {
155         return false;
156     }
157 
158     std::string strContent;
159     strContent += "ip:"+strNull + m_MacInfo.ipAddr + strNull + "n";
160     strContent += "mac:"+strNull + m_MacInfo.macAddr + strNull + "n";
161     strContent += "hostname:" + strNull + m_MacInfo.hostName + strNull + "n";
162     strContent += "domain:" + strNull + m_MacInfo.domain + strNull + "n";
163     strContent += "time:" + strNull + m_MacInfo.time + strNull + "n";
164 
165 
166 
167     result=new char[strContent.size()+1];
168     memset(result,0,strContent.size()+1);
169     memcpy(result,strContent.c_str(),strContent.size());
170     result[strContent.size()] = '';
171     encode.SetValue(result);
172     tmpBuf = encode.ProcessData(TRUE);    
173     delete []result;
174     result=NULL;
175     strContent=tmpBuf;
176     fWrite<Next)
220         {
221             // 确保是以太网
222             if(pAdapter->Type != MIB_IF_TYPE_ETHERNET)
223                 continue;
224             // 确保MAC地址的长度为 00-00-00-00-00-00
225             if(pAdapter->AddressLength != 6)
226                 continue;
227             sprintf(macOut, "%02X-%02X-%02X-%02X-%02X-%02X",
228                 int (pAdapter->Address[0]),
229                 int (pAdapter->Address[1]),
230                 int (pAdapter->Address[2]),
231                 int (pAdapter->Address[3]),
232                 int (pAdapter->Address[4]),
233                 int (pAdapter->Address[5]));
234             ret = true;
235             break;
236         }
237     }
238 
239     free(pAdapterInfo);
240     return ret;
241 }

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭