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

📄 systeminfodlg.cpp

📁 获取系统信息
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		if(!IsDlgButtonChecked(IDC_USEGBTYPE))
		{
			m_driverlist.InsertItem(n,(disktype==3?"(硬)":(disktype==2?"(移)":(disktype==5?"(光)":"(未)")))+driverlist.Mid(n_t,2),NULL);
			disk_space.Format("%d",total_space);
			m_driverlist.SetItemText(n,1,disk_space+" MB");

			
			disk_space.Format("%d",total_space-free_space);
			m_driverlist.SetItemText(n,2,disk_space+" MB");
			
			disk_space.Format("%d",free_space);
			m_driverlist.SetItemText(n,3,disk_space+" MB");
		}
		else
		{
			CString info="";
			m_driverlist.InsertItem(n,(disktype==3?"(硬)":(disktype==2?"(移)":(disktype==5?"(光)":"(未)")))+driverlist.Mid(n_t,2),NULL);
			info.Format("%f",(float)total_space/1024);
			info=info.Mid(0,info.Find(".",0)+3)+" GB";
			m_driverlist.SetItemText(n,1,info);

			info.Format("%f",(float)(total_space-free_space)/1024);
			info=info.Mid(0,info.Find(".",0)+3)+" GB";
			m_driverlist.SetItemText(n,2,info);

			info.Format("%f",(float)free_space/1024);
			info=info.Mid(0,info.Find(".",0)+3)+" GB";
			m_driverlist.SetItemText(n,3,info);
		}
		
		disk_space.Format("%d",used_percent);
		m_driverlist.SetItemText(n,4,disk_space+"%");
		
		disk_space.Format("%d",free_percent);
		m_driverlist.SetItemText(n,5,disk_space+"%");
		
		n_t+=2;
	}
	////////////////磁盘信息
	
	strdir.Format("硬盘驱动器 %d 个,光盘驱动器 %d 个,可移动驱动器 %d 个",dirvernum-cdnum-renum,cdnum,renum);
	SetDlgItemText(IDC_DRIVERINFO,strdir);
	if(IsDlgButtonChecked(IDC_USEGBTYPE))
	{
		strdir.Format("硬盘总大小为 %dGB,已用 %dGB, 可用 %dGB",totalbulk/1024,(totalbulk-freebulk)/1024,freebulk/1024);
	}
	else
	{
		strdir.Format("硬盘总大小为 %dMB,已用 %dMB, 可用 %dMB",totalbulk,totalbulk-freebulk,freebulk);
	}
	SetDlgItemText(IDC_HARDDISKINFO,strdir);
	return true;
}

BOOL CSystemInfoDlg::GetMemInfo()
{
	MEMORYSTATUS memStatus;
	char buf[80];
	CString memsta="";
	memStatus.dwLength=sizeof(MEMORYSTATUS);

	GlobalMemoryStatus(&memStatus);

	DWORD tom=memStatus.dwTotalPhys;
	DWORD mem=memStatus.dwAvailPhys;
	DWORD res=memStatus.dwAvailVirtual;

	tom=(tom/1024)/1024;
	mem=(mem/1024)/1024;
	res=(res/1024)/1024;
	memsta.Format("总物理内存 %ld MB,可用物理内存 %ld MB,虚拟内存 %ld MB",tom,mem,res);

	SetDlgItemText(IDC_MEMINFO,memsta);

	return true;
}

void CSystemInfoDlg::OnAutorenovate() 
{
	if(IsDlgButtonChecked(IDC_AUTORENOVATE))
	{
		SetTimer(1,1000,NULL);
	}
	else
	{
		KillTimer(1);
	}
}

void CSystemInfoDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	OnGetsysteminfo();
	CDialog::OnTimer(nIDEvent);
}

BOOL CSystemInfoDlg::GetOsVersion()
{
	CString osinfo;

	CString m_stInfo;
	CString m_stMinorVer;
	CString m_stServPack;
	CString m_stBuildNumber;

	int stat = 0;
	char buffer[20];
	TCHAR data [64];
	DWORD dataSize;
	DWORD win95Info;
	OSVERSIONINFO versionInfo;
	HKEY hKey;
	LONG result;

	// set the size of OSVERSIONINFO, before calling the function

	versionInfo.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);

	// Get the version information

	if (!::GetVersionEx (&versionInfo)) 
	{
		return false;
	}

	// If NT ,then check if its server or workstation.

	if (versionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT) {


		m_stInfo =  (_T ("Windows NT"));

		dataSize = sizeof (data);
		
		result = ::RegOpenKeyEx (HKEY_LOCAL_MACHINE,
			"System\\CurrentControlSet\\Control\\ProductOptions",
			0, KEY_QUERY_VALUE, &hKey);

		// If there is error in opening the registry key, return

		if (result != ERROR_SUCCESS) {
			SetLastError (result);
			return false;
		}

		result = ::RegQueryValueEx (hKey, _T("ProductType"), NULL, NULL,
			(LPBYTE) data, &dataSize);

		// Make sure to close the reg key

		RegCloseKey (hKey);

		if (result != ERROR_SUCCESS) {
			SetLastError (result);
			return false;
		}

		// Check what string has been returned

		if (lstrcmpi (data, "WinNT") == 0) {
			m_stInfo = _T ("Windows NT Workstation");
		}
		else if (lstrcmpi (data, "ServerNT") == 0) {
			m_stInfo = _T ("Windows NT Server");
		}
		else {
			m_stInfo = _T ("Windows NT Server - Domain Controller");
		}

		// Check the version number

		if (versionInfo.dwMajorVersion == 3 || versionInfo.dwMinorVersion == 51) {
			m_stMinorVer = _T ("3.51");
		}
		else {
			m_stMinorVer = _T ("4.0");
		}

		// Get the build number.

		_itoa( versionInfo.dwBuildNumber, buffer, 10 );
		m_stBuildNumber = CString (buffer);
	}
	else if (versionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) {
		m_stInfo = _T ("Windows 95");

		if ((versionInfo.dwMajorVersion > 4) || ((versionInfo.dwMajorVersion == 4)
			&& (versionInfo.dwMinorVersion > 0))) {
			m_stInfo = _T ("Windows 98");
		}

		// For win95, build number is low order word
		
		win95Info = (DWORD)(LOBYTE(LOWORD(versionInfo.dwBuildNumber)));

		// Get the build number.

		_itoa( win95Info, buffer, 10 );
		m_stBuildNumber = CString (buffer);
	}
	else {
		m_stInfo = _T ("Windows 3.1");
	}

	// Get service pack information.

	m_stServPack = CString (versionInfo.szCSDVersion);
	m_stServPack.FreeExtra ();

	osinfo="操作系统:"+m_stInfo+" Ver"+m_stMinorVer+" Build"+m_stBuildNumber+" "+m_stServPack;
	SetDlgItemText(IDC_OSVERSION,osinfo);
	return true;
}


void CSystemInfoDlg::OnSettop() 
{
	CRect rc;
	GetWindowRect(rc);
	if(IsDlgButtonChecked(IDC_SETTOP))
	{
		SetWindowPos(&CWnd::wndTopMost, 0,0,0,0, SWP_NOMOVE|SWP_NOSIZE);	
	}
	else
	{
		SetWindowPos(&CWnd::wndNoTopMost,rc.left,rc.top,0,0,SWP_NOMOVE|SWP_NOSIZE);
	}
}

void CSystemInfoDlg::OnUsegbtype() 
{
	// TODO: Add your control notification handler code here
	InitDriverList();
	OnGetsysteminfo();
}


void CSystemInfoDlg::OnSave() 
{
	// TODO: Add your control notification handler code here
	CFileDialog dlgFileOpen(FALSE,NULL,NULL,OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR | OFN_EXPLORER,"文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*||");
	int structsize=0; 
	DWORD dwVersion,dwWindowsMajorVersion,dwWindowsMinorVersion; 
	//检测目前的操作系统,GetVersion具体用法详见MSDN 
	dwVersion = GetVersion(); 
	dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion))); 
	dwWindowsMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion))); 
	// 如果运行的操作系统是Windows NT/2000 
	if (dwVersion < 0x80000000)  
		structsize =88;//显示新的文件对话框 
	else 
		//运行的操作系统Windows 95/98  
		structsize =76;//显示老的文件对话框 
	
	dlgFileOpen.m_ofn.lStructSize=structsize; 
	TCHAR lpstrFilename[MAX_PATH] = ""; 
	dlgFileOpen.m_ofn.lpstrFile=lpstrFilename; 
	if(dlgFileOpen.DoModal()==IDOK)
	{
		CString filename;
		filename.Format("%s",lpstrFilename);
		if(filename.Right(4)!=".txt")
		{
			filename+=".txt";
		}

		CFile file;
		if(file.Open(filename,CFile::modeCreate | CFile::modeWrite,NULL))
		{
			char buf[200];
			CString strbuf;
			file.SeekToBegin();
			GetDlgItemText(IDC_OSVERSION,buf,200);
			file.Write(strbuf,strbuf.GetLength());

			GetDlgItemText(IDC_CPUINFO,buf,200);
			strbuf.Format("%s\r\n\r\n",buf);
			file.Write(strbuf,strbuf.GetLength());

			GetDlgItemText(IDC_MEMINFO,buf,200);
			strbuf.Format("%s\r\n\r\n",buf);
			file.Write(strbuf,strbuf.GetLength());	

			file.Write("驱动器信息:\r\n",strlen("驱动器信息:\r\n"));
			file.Write("驱动器\t大小\t已用\t可用\t占用(%)\t可用(%)",strlen("驱动器\t大小\t已用\t可用\t占用(%)\t可用(%)"));
			strbuf="";
			for(int nItem=0;nItem<m_driverlist.GetItemCount();nItem++)
			{
				strbuf+="\r\n";
				file.SeekToEnd();
				for(int nSubItem=0;nSubItem<6;nSubItem++)
				{
					if(m_driverlist.GetItemText(nItem,nSubItem)!="")
					{
						strbuf+=m_driverlist.GetItemText(nItem,nSubItem)+"\t";
					}
				}
			}
			strbuf.Replace(" MB","MB");
			strbuf.Replace(" GB","GB");
			file.Write(strbuf+"\r\n\r\n",strbuf.GetLength()+strlen("\r\n\r\n"));

			GetDlgItemText(IDC_DRIVERINFO,buf,200);
			strbuf.Format("%s\r\n\r\n",buf);
			file.Write(strbuf,strbuf.GetLength());

			GetDlgItemText(IDC_HARDDISKINFO,buf,200);
			strbuf.Format("%s\r\n\r\n",buf);
			file.Write(strbuf,strbuf.GetLength());
			file.Close();

			MessageBox("保存成功!","保存成功",MB_ICONWARNING);
		}
		else
		{
			MessageBox("创建或者写入文件失败!","警告",MB_ICONSTOP);
		}
//		SetDlgItemText(IDC_FILE,lpstrFilename);
	}
}

⌨️ 快捷键说明

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