当前位置:文档之家› C++检测电脑配置信息

C++检测电脑配置信息

//键不存在
RegCloseKey(key);
continue;
};
//如果查询到的name不是Video则说明该键不是显卡驱动项
if(_tcscmp(TEXT("Video"),name)!=0)
{
RegCloseKey(key);
continue; //返回for循环
if (ERROR_SUCCESS != lResult)
return;
int i = 0,count = 0;
DWORD size = 0,type = 0;
for (;;++i)
{
Sleep(5);
size = 512;
TCHAR name[512] = {0};//保存动器信息,由于DStr内部数据格式是A:\NULLB:\NULLC:\NULL,所以DSLength/4可以获得具体大循环范围
for(int i=0;i<DSLength/4;++i)
{
Sleep(10);
CString strdriver = DStr+i*4;
CString strTmp,strTotalBytes,strFreeBytes;
dwTotalVirtual.Format(_T("虚拟内存:%ld MB"),dwVirtSize);
}
2
/****获取CPU名称、内核数目、主频*******/
VoidGetCpuInfo(CString&chProcessorName,CString&chProcessorType,DWORD &dwNum,DWORD &dwMaxClockSpeed)
//通过循环操作查看每一位数据是否为,如果为则磁盘为真,如果为则磁盘不存在。
while(DiskInfo)
{
//通过位运算的逻辑与操作,判断是否为
Sleep(10);
if(DiskInfo&1)
{
DiskCount++;
}
DiskInfo = DiskInfo >> 1;//通过位运算的右移操作保证每循环一次所检查的位置向右移动一位。*/
}
}
4
/****获取显卡信息*****/
void GetDisplayCardInfo(DWORD &dwNum,CString chCardName[])
{
HKEY keyServ;
HKEY keyEnum;
HKEY key;
HKEY key2;
LONG lResult;//LONG型变量-保存函数返回值
void GetDiskInfo(DWORD &dwNum,CString chDriveInfo[])
{
DWORD DiskCount = 0;
//利用GetLogicalDrives()函数可以获取系统中逻辑驱动器的数量,函数返回的是一个位无符号整型数据。
DWORD DiskInfo = GetLogicalDrives();
{
CString strPath=_T("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0");//注册表子键路径
CRegKey regkey;//定义注册表类对象
LONG lResult;//LONG型变量-反应结果
lResult=regkey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS); //打开注册表键
{
chProcessorName = chCPUName;
}
//查询CPU主频
DWORD dwValue;
if (ERROR_SUCCESS == regkey.QueryDWORDValue(_T("~MHz"),dwValue))
{
dwMaxClockSpeed = dwValue;
}
regkey.Close();//关闭注册表
{
strTmp.Format(_T("虚拟RAM磁盘"));
}
break;
case DRIVE_UNKNOWN:
{
strTmp.Format(_T("虚拟RAM未知设备"));
}
break;
default:
strTmp.Format(_T("未知设备"));
break;
}
//GetDiskFreeSpaceEx函数,可以获取驱动器磁盘的空间状态,函数返回的是个BOOL类型数据
GlobalMemoryStatus(&Mem);
DWORD dwSize = (DWORD)Mem.dwTotalPhys/(1024*1024);
DWORD dwVirtSize = (DWORD)Mem.dwTotalVirtual/(1024*1024);
dwTotalPhys.Format(_T("物理内存:%ld MB"),dwSize);
{
case PROCESSOR_INTEL_386:
{
chProcessorType.Format(_T("Intel 386 processor"));
}
break;
case PROCESSOR_INTEL_486:
{
chProcessorType.Format(_T("Intel 486 Processor"));
{
strTotalBytes.Format(_T(""));
strFreeBytes.Format(_T(""));
}
chDriveInfo[i] = strTmp + _T("(") + strdriver + _T("):") + strTotalBytes + strFreeBytes;
si+=4;
int DSLength = GetLogicalDriveStrings(0,NULL);
WCHAR* DStr = new WCHAR[DSLength];
memset(DStr,0,DSLength);
//通过GetLogicalDriveStrings将字符串信息复制到堆区数组中,其中保存了所有驱动器的信息。
}
size = 512;
//查询key下的字段为Group的子键字段名保存到name
lResult = RegQueryValueEx(key,TEXT("Group"),0,&type,(LPBYTE)name,&size);
if(lResult == ERROR_FILE_NOT_FOUND)
{
C++
1
/***获取物理内存和虚拟内存大小***/
Void GetMemoryInfo(CString &dwTotalPhys,CString &dwTotalVirtual);
{
// TODO: Add extra initialization here
MEMORYSTATUS Mem;
// get the memory status
{
strTotalBytes.Format(_T("磁盘总容量%fMB"),(float)i64TotalBytes/1024/1024);
strFreeBytes.Format(_T("磁盘剩余空间%fMB"),(float)i64FreeBytesToCaller/1024/1024);
}
else
if (lResult!=ERROR_SUCCESS)
{
return;
}
WCHAR chCPUName[50] = {0};
DWORD dwSize=50;
//获取ProcessorNameString字段值
if (ERROR_SUCCESS ==regkey.QueryStringValue(_T("ProcessorNameString"),chCPUName,&dwSize))
if (ERROR_SUCCESS != lResult)
return;
//查询"SYSTEM\\CurrentControlSet\\Enum"下的所有子键保存到keyEnum
lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SYSTEM\\CurrentControlSet\\Enum"),0,KEY_READ,&keyEnum);
fResult = GetDiskFreeSpaceEx (strdriver,
(PULARGE_INTEGER)&i64FreeBytesToCaller,
(PULARGE_INTEGER)&i64TotalBytes,
(PULARGE_INTEGER)&i64FreeBytes);
if(fResult)
}
if (dwNum < DiskCount)
{
return;//实际的磁盘数目大于dwNum
}
dwNum = DiskCount;//将磁盘分区数量保存
//-------------------------------------------------------------------//
相关主题