📄 systeminfodlg.cpp
字号:
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 + -