www.pudn.com > IP_phone.rar > SystemInfoDLG.cpp


// SystemInfoDLG.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "NC_Client.h" 
#include "SystemInfoDLG.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CSystemInfoDLG dialog   
 
 
CSystemInfoDLG::CSystemInfoDLG(CWnd* pParent /*=NULL*/) 
	: CDialog(CSystemInfoDLG::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CSystemInfoDLG) 
	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 CSystemInfoDLG::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CSystemInfoDLG) 
	DDX_Control(pDX, IDOK, m_ok); 
	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(CSystemInfoDLG, CDialog) 
	//{{AFX_MSG_MAP(CSystemInfoDLG) 
	ON_WM_TIMER() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CSystemInfoDLG message handlers 
 
BOOL CSystemInfoDLG::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	//使用sysinfo类 
	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;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
//OnTime 
void CSystemInfoDLG::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); 
}