⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 systeminfoform.cpp

📁 Visual C++编写的工程解析器源代码
💻 CPP
字号:
// SystemInfoForm.cpp : implementation file
//

#include "stdafx.h"
#include "parsecproj.h"
#include "SystemInfoForm.h"
#include "SystemInfo.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSystemInfoForm dialog

CSystemInfoForm::CSystemInfoForm()
	: CDialog(CSystemInfoForm::IDD)
{
	//{{AFX_DATA_INIT(CSystemInfoForm)
	m_strVersion = _T("");
	m_strWinName = _T("");
	m_nAvialPhyMem = 0;
	m_nAvialVMem = 0;
	m_nTotalPM = 0;
	m_nTotalVM = 0;
	m_strCpuType = _T("");
	m_nCpuSpeed = 0;
	m_nFreeDiskSpace = 0;
	m_strTotalDiskSpace = _T("");
	//}}AFX_DATA_INIT
}


void CSystemInfoForm::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSystemInfoForm)
	DDX_Text(pDX, IDC_WINVERSION, m_strVersion);
	DDX_Text(pDX, IDC_WINNAME, m_strWinName);
	DDX_Text(pDX, IDC_PHYSICMEM_EDIT, m_nAvialPhyMem);
	DDX_Text(pDX, IDC_VIRTUALMEM_EDIT, m_nAvialVMem);
	DDX_Text(pDX, IDC_TOTALPM, m_nTotalPM);
	DDX_Text(pDX, IDC_TOTALVM, m_nTotalVM);
	DDX_Text(pDX, IDC_CPUTYPE, m_strCpuType);
	DDX_Text(pDX, IDC_CPUSPEED, m_nCpuSpeed);
	DDX_Text(pDX, IDC_DISKFREE_EDIT, m_nFreeDiskSpace);
	DDX_Text(pDX, IDC_TOTALDISKSPACE_EDIT, m_strTotalDiskSpace);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSystemInfoForm, CDialog)
	//{{AFX_MSG_MAP(CSystemInfoForm)
	ON_WM_TIMER()
	ON_BN_CLICKED(IDC_EXITBTN, OnExitbtn)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSystemInfoForm message handlers

BOOL CSystemInfoForm::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//
	LPSYSINFO siSysInfo;
	CSystemInfo m_clsSysInfo;
	siSysInfo = m_clsSysInfo.GetSysInfo();
	ASSERT(siSysInfo);
	
	m_strVersion = siSysInfo->szWindowsVersion;
	m_strWinName = siSysInfo->szWindowsType;
	
	m_nTotalPM = siSysInfo->szPhysicMem / 1024;	
	m_nTotalVM = siSysInfo->szTotalVirtualMem / 1024;	
	
	m_nAvialPhyMem = siSysInfo->szNoUsePhysicMem / 1024;				
	m_nAvialVMem = siSysInfo->szAvailVirtualMem / 1024;	
	
	m_strTotalDiskSpace.Format("%dGB", siSysInfo->szTotalDiskSpace);
	m_nFreeDiskSpace = siSysInfo->szFreeDiskSpace;
	
	//得到CPU型号
	LONG result;
	HKEY hKey;
	TCHAR vendorData [64];
	DWORD data;
	DWORD dataSize;

	result = ::RegOpenKeyEx (HKEY_LOCAL_MACHINE,
		"Hardware\\Description\\System\\CentralProcessor\\0", 0, KEY_QUERY_VALUE, &hKey);	

	if (result == ERROR_SUCCESS) {
		result = ::RegQueryValueEx (hKey, _T("~MHz"), NULL, NULL,
			(LPBYTE)&data, &dataSize);
		
		m_nCpuSpeed = data;

		dataSize = sizeof(vendorData);
		result = ::RegQueryValueEx (hKey, _T("VendorIdentifier"), NULL, NULL,
			(LPBYTE)vendorData, &dataSize);

		m_strCpuType.Format ("%s", vendorData);
	}

	//关闭主键
	RegCloseKey (hKey);
	
	//更新数据	
	UpdateData(FALSE);
	SetTimer(1, 500, NULL);
	//
	return TRUE;  
}

void CSystemInfoForm::OnTimer(UINT nIDEvent) 
{
	switch(nIDEvent)
	{
	case 1:
		{
			CSystemInfo m_clsSysInfo;
			LPSYSINFO siSysInfo;
			
			siSysInfo = m_clsSysInfo.GetSysInfo();
			ASSERT(siSysInfo);									
			
			m_strVersion = siSysInfo->szWindowsVersion;
			m_strWinName = siSysInfo->szWindowsType;
			
			m_nTotalPM = siSysInfo->szPhysicMem / 1024;	
			m_nTotalVM = siSysInfo->szTotalVirtualMem / 1024;	
			
			m_nAvialPhyMem = siSysInfo->szNoUsePhysicMem / 1024;				
			m_nAvialVMem = siSysInfo->szAvailVirtualMem / 1024;			
	
			m_strTotalDiskSpace.Format("%dGB", siSysInfo->szTotalDiskSpace);
			m_nFreeDiskSpace = siSysInfo->szFreeDiskSpace;

			UpdateData(FALSE);
			
		}
		break;
	}
	//
	CDialog::OnTimer(nIDEvent);
}

void CSystemInfoForm::OnExitbtn() 
{
	CDialog::OnOK();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -