WindowsAPI-------获取系统的相关信息

  • 头文件
#include "stdafx.h"
using namespace std;

struct WindowVersion{
	DWORD marjorVer; //大版本号
	DWORD minorVer; // 小版本号
	DWORD buildNumber; //构建版本号
};

class SystemInfo{
public:
	SystemInfo();
	~SystemInfo();
	std::wstring GetSystemVersion(); // 获取系统版本
	std::wstring GetComputerName(); // 获取计算机名
	int GetPhysicalMemorySize(); //获取物理内存大小
	int GetCurrentMemoryUsePercent(); //获取当前用户内存使用率

private:
	WindowVersion m_version; //windows版本
	std::wstring convertVersionToWstring(int majorVer,int minorVer,int buildNumber);
	std::wstring m_computer_name;  // 计算机名称
	int m_memory_size; //内存大小
};
  • 实现文件
#include "stdafx.h"
#include "SystemInfo.h"
#include <iosfwd>
#include <sstream>

using namespace std;

SystemInfo::SystemInfo()
{

}

SystemInfo::~SystemInfo()
{

}

// 获取系统版本
// 返回字符串格式 L'xx.xx.xxxx'
std::wstring SystemInfo::GetSystemVersion()
{
	WindowVersion wv;
	OSVERSIONINFOW ver_info;
	ver_info.dwOSVersionInfoSize = sizeof(ver_info); //初始化结构体大小
	GetVersionEx(&ver_info);
	wv.marjorVer = ver_info.dwMajorVersion;
	wv.minorVer = ver_info.dwMinorVersion;
	wv.buildNumber = ver_info.dwBuildNumber;
	m_version = wv;
	std::wstring version_ = convertVersionToWstring(wv.marjorVer,wv.minorVer,wv.buildNumber);
	return version_;
}

// 返回系统名称
std::wstring SystemInfo::GetComputerName()
{
	DWORD size_ = 0;
    TCHAR ComputerName[MAX_COMPUTERNAME_LENGTH]; 
	::GetComputerNameW(ComputerName,&size_);
	m_computer_name=ComputerName;
	return m_computer_name;
}

// 需要在x64里面运行, x86平台运行 最多只能获取2gb
// 返回 单位gb
int SystemInfo::GetPhysicalMemorySize()
{
	MEMORYSTATUS   Mem;
	GlobalMemoryStatus(&Mem);
	int memory_use = (double)(Mem.dwTotalPhys)/(double)(1024*1024*1024);
	m_memory_size = memory_use;
	return memory_use;
}

int SystemInfo::GetCurrentMemoryUsePercent()
{
	MEMORYSTATUS   Mem;
	GlobalMemoryStatus(&Mem);
	return Mem.dwMemoryLoad; 
}

std::wstring SystemInfo::convertVersionToWstring(int majorVer,int minorVer,int buildNumber)
{
	std::wstringstream oss_;
	oss_ <<majorVer<< L"."<<minorVer<<L"."<<buildNumber;
	std::wstring wstr=oss_.str();
	return wstr;
}

发布了368 篇原创文章 · 获赞 94 · 访问量 37万+

猜你喜欢

转载自blog.csdn.net/Giser_D/article/details/104390346