VC++获取系统信息/获取OS/获取MAC/获取本地IP/判断是否为网吧

现在很多软件都有统计系统了,说好听点叫做统计用户习惯,改良产品,不好听点,呵呵,我就不说了。
核心我已经封装成类了,可以获取操作系统版本,MAC地址,本地IP地址,以及判定是否为网吧。

核心代码如下:

//PCInfo.h

#pragma once
#include <string>

class CPCInfo
{
public:
	CPCInfo(void);
	~CPCInfo(void);
private:
	// 获取MAC地址
	std::string& GetMAC();
	// 获取IP地址
	std::string& GetIP();
	// 获取操作系统
	std::string& GetOS();
	// 是否为网吧
	bool IsInternetBar();
public:
	std::string m_strIP;
	std::string m_strMAC;
	std::string m_strOS;
	bool m_bIsInternetBar;
};

//PCInfo.cpp

#include "PCInfo.h"
#include <winsock2.h>
#include <Iphlpapi.h>
#pragma  comment(lib,"Iphlpapi.lib")
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")


using std::string;

void byte2Hex(unsigned char bData,unsigned char hex[])
{
	int high=bData/16,low =bData %16;
	hex[0] = (high <10)?('0'+high):('A'+high-10);
	hex[1] = (low <10)?('0'+low):('A'+low-10);
}

bool getLocalMac1(unsigned char *mac) //获取本机MAC址 
{
	ULONG ulSize=0;
	PIP_ADAPTER_INFO pInfo=NULL;
	int temp = GetAdaptersInfo(pInfo,&ulSize);//第一处调用,获取缓冲区大小
	pInfo=(PIP_ADAPTER_INFO)malloc(ulSize);
	temp = GetAdaptersInfo(pInfo,&ulSize);
	int iCount=0;
	while(pInfo)//遍历每一张网卡
	{
		//  pInfo->Address MAC址
		for(int i=0;i<(int)pInfo->AddressLength;i++)
		{
			byte2Hex(pInfo->Address[i],&mac[iCount]);
			iCount+=2;
			if(i<(int)pInfo->AddressLength-1)
			{
				mac[iCount++] = ':';
			}
			else
			{
				mac[iCount++] = '#';
			}
		}
		break;
		pInfo = pInfo->Next;
	}
	free(pInfo);

	if(iCount >0)
	{
		mac[--iCount]='\0';
		return true;
	}
	else
	{
		return false;
	}
}


//通过GetAdaptersI
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值