高分求 C++获取CPU ID ,能运行

2025-02-01 23:51:55
推荐回答(1个)
回答1:

定义:
CString DetectCPUType();
CString DetectMemoryType();
变量:
// CPU type
CString m_sCPUNameString;
CString m_sCPUIdentifier;
CString m_sCPUVendorIdentifier;
DWORD m_dwCPUSpeed;

// total physical memory in MB
DWORD m_TotMem;
// total virtual memory
DWORD m_TotVirtMem;

函数:
CString CSystemLocalInfo::DetectCPUType()
{
LONG lresult;
HKEY NewKey;

lresult = RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T(CPU_CONFIGURATION_KEY),
0,KEY_EXECUTE,&NewKey);

if (ERROR_SUCCESS != lresult) return 0; // key not found

TCHAR szKeyValue[100]; memset(szKeyValue,0,100);
DWORD dwType=REG_SZ; DWORD dwSize=100;

lresult=RegQueryValueEx(NewKey,_T("Identifier"),NULL,
&dwType,(LPBYTE)szKeyValue,&dwSize);

if ((lresult==ERROR_SUCCESS) && (dwSize>0))
{ m_sCPUIdentifier=szKeyValue; };

memset(szKeyValue,0,100); dwType=REG_SZ; dwSize=100;

lresult=RegQueryValueEx(NewKey,_T("VendorIdentifier"),NULL,
&dwType,(LPBYTE)szKeyValue,&dwSize);

if ((lresult==ERROR_SUCCESS) && (dwSize>0))
{ m_sCPUVendorIdentifier=szKeyValue; };

memset(szKeyValue,0,100); dwType=REG_SZ; dwSize=100;

lresult=RegQueryValueEx(NewKey,_T("ProcessorNameString"),
NULL,&dwType,(LPBYTE)szKeyValue,&dwSize);

if ((lresult==ERROR_SUCCESS) && (dwSize>0))
{ m_sCPUNameString=szKeyValue; };

DWORD dwData=0; dwType=REG_DWORD; dwSize=sizeof(dwData);
lresult=RegQueryValueEx(NewKey,_T("~MHz"),NULL,
&dwType,(LPBYTE)(&dwData),&dwSize);

if ((lresult==ERROR_SUCCESS) && (dwSize>0))
{ m_dwCPUSpeed=dwData; };

RegCloseKey(NewKey);
return szKeyValue;
}

CString CSystemLocalInfo::DetectMemoryType()
{
// TODO: Add extra initialization here
MEMORYSTATUS Mem;
// get the memory status
GlobalMemoryStatus(&Mem);
// set the total memory
this->m_TotMem=(DWORD)Mem.dwTotalPhys/(1024*1024);
this->m_TotVirtMem=(DWORD)Mem.dwTotalVirtual/(1024*1024);

CString Msg;
Msg.Format("物理内存: %ld MB : 虚拟内存: %ld MB",
this->m_TotMem,this->m_TotVirtMem);
return Msg;
}

网上找的,你可以试试。

顺便鄙视一下yfhhappy989898

不想回答就不要回答,骂人干什么