
1个回答
2013-06-13
展开全部
这个都有对应的API或者其他层次封装的接口。【初学者仔细阅读MSDN,了解基础知识】--------------------------我随便给你举个例子。定义:
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;
}
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询