Windows优化大师
看了杨中科老师的《C语言也能干大事》中的自己动手开发Windows优化大师后有了写自己的优化大师的冲动,使用如鹏网的开发向导可以很轻松地搭建成如下图所示的图形界面
程序主模块:
系统信息模块
内存状态模块
硬盘信息模块
函数模块
函数名 |
函数功能 |
Get_User_Name( |
得到用户名 |
Get_Computer_Name |
得到计算机名 |
Get_System_Version |
得到系统版本 |
TimerProc |
回调函数(用于得到系统时间) |
Get_Time |
得到系统的运行时间 |
GetTime |
回调函数(用于得到系统的时间) |
Get_Memory |
得到内存信息 |
Show |
得到磁盘的盘符 |
Get_Type |
得到磁盘的类型 |
Get_Dist_Space |
得到磁盘空间 |
Get_Dist_Infro |
得到磁盘信息 |
程序代码:
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include <WinBase.h>
#include <math.h>
#include "resource.h"
#include "MainDlg.h"BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch(uMsg){HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);}return FALSE;
}
//*得到用户名*/
void Get_User_Name(HWND hwnd)
{TCHAR buffer[256];DWORD dwRct = sizeof(buffer) / sizeof(TCHAR);ZeroMemory(buffer, sizeof(buffer) / sizeof(TCHAR));/*得到用户名*/GetUserName(buffer, &dwRct);SetDlgItemText(hwnd, IDC_EDIT1, buffer);
}/*得到计算机名*/
void Get_Computer_Name(HWND hwnd)
{TCHAR buffer[256];DWORD dwRct = sizeof(buffer) / sizeof(TCHAR);ZeroMemory(buffer, sizeof(buffer) / sizeof(TCHAR));/*得到计算机名*/GetComputerName(buffer, &dwRct);SetDlgItemText(hwnd, IDC_EDIT2, buffer);
}/*用于保存操作系统的版本*/TCHAR *strOsVersion;/*得到系统的版本*/
void Get_System_Version(HWND hwnd)
{/*操作系统版本信息结构*/OSVERSIONINFO osvi;/*清零*/ZeroMemory(&osvi, sizeof(osvi));/*得到操作系统版本信息的大小*/osvi.dwOSVersionInfoSize = sizeof(osvi);/*得到系统的版本*/GetVersionEx(&osvi);/*操作系统的构架*/switch (osvi.dwPlatformId){/*NT架构*/case VER_PLATFORM_WIN32_NT:{ /*主版本号*/ /*副版本号*/if ( 5 == osvi.dwMajorVersion && 0 == osvi.dwMinorVersion){SetDlgItemText(hwnd, IDC_EDIT3, TEXT("Windows 2000"));}else if ( 5 == osvi.dwMajorVersion && 1 == osvi.dwMinorVersion){SetDlgItemText(hwnd, IDC_EDIT3, TEXT("Windows XP"));}else if(6 == osvi.dwMajorVersion && 0 == osvi.dwMinorVersion) {SetDlgItemText(hwnd, IDC_EDIT3, TEXT("Windows Vista"));}else if ( 4 == osvi.dwMajorVersion && 0 == osvi.dwMinorVersion){SetDlgItemText(hwnd, IDC_EDIT3, TEXT("Windows NT"));}else if (6 == osvi.dwMajorVersion && 1 == osvi.dwMinorVersion){SetDlgItemText(hwnd, IDC_EDIT3, TEXT("Windows 7"));}}break;/*旧架构*/case VER_PLATFORM_WIN32_WINDOWS:{if (osvi.dwMajorVersion == 4&&osvi.dwMinorVersion == 10){SetDlgItemText(hwnd, IDC_EDIT3, TEXT("Windows 98"));}else if (osvi.dwMajorVersion == 4&&osvi.dwMinorVersion == 90){SetDlgItemText(hwnd, IDC_EDIT3, TEXT("Windows ME"));}else{SetDlgItemText(hwnd, IDC_EDIT3, TEXT("Windows 95"));}}break;default:break;}
}/*用于得到系统时间*/
void CALLBACK TimerProc(HWND hwnd, UINT message,UINT iTimerID, DWORD dwTime)
{SYSTEMTIME stLock; /*时间结构*//*得到系统时间*/GetLocalTime(&stLock);TCHAR Time[256];wsprintf(Time, "%04d年%02d月%02d日%02d:%02d:%02d", stLock.wYear, stLock.wMonth, stLock.wDay, stLock.wHour, stLock.wMinute, stLock.wSecond);SetDlgItemText(hwnd, IDC_EDIT4, Time);
}/*得到系统的运行时间*/
void Get_Time(HWND hwnd)
{/*得到系统自启动以来的毫秒数*/DWORD dwStart = GetTickCount();TCHAR buffer[256];/*时*/DWORD Hour = (dwStart / 1000) / 3600;/*分*/DWORD Minute = ((dwStart / 1000) % 3600) / 60;/*秒*/DWORD Second = ((dwStart / 1000) % 3600) % 60;/*系统运行时间*/wsprintf(buffer, "%02d:%02d:%02d", Hour, Minute, Second);/*显示系统运行时间*/SetDlgItemText(hwnd, IDC_EDIT6, buffer);
}//*用于得到系统启动时间*/
void CALLBACK GetTime(HWND hwnd, UINT message,UINT iTimerID, DWORD dwTime)
{/*时间结构*/SYSTEMTIME stLocal;/*得到系统时间*/GetLocalTime(&stLocal);TCHAR Time[256];/*当前的系统时间(秒)*/int Local = stLocal.wHour * 3600 + stLocal.wMinute * 60 + stLocal.wSecond;/*得到系统自启动以来的毫秒数*/DWORD dwStart = GetTickCount();/*系统启动时的时间(秒)*/DWORD dwSecond = dwStart / 1000;/*系统启动时的时间(秒)*/int Move = Local - dwSecond;/*系统启动时的时间:时*/int Hour = Move / 3600;/*系统启动时的时间:分*/int Minute = (Move % 3600) / 60;/*系统启动时的时间:秒*/int Second = (Move % 3600) % 60;wsprintf(Time, "%02d:%02d:%02d", Hour, Minute, Second);SetDlgItemText(hwnd, IDC_EDIT5, Time);
}/*得到内存*/
void Get_Memory(HWND hwnd)
{/*内存结构*/MEMORYSTATUS memStatex;/*缓冲区大小*/const int nBufSize = 512;/*声明字符缓冲区*/TCHAR chBuf[nBufSize];/*调用得到内存信息的函数*/GlobalMemoryStatus(&memStatex);/*清零*/ZeroMemory(chBuf,nBufSize);/*总物理内存大小*/wsprintf(chBuf, TEXT("%dM"), memStatex.dwTotalPhys / (1024 * 1024));SetDlgItemText(hwnd, IDC_EDIT7, chBuf);/*物理内存使用率*/wsprintf(chBuf, TEXT("%d%%"), memStatex.dwMemoryLoad);SetDlgItemText(hwnd, IDC_EDIT8, chBuf);/*虚拟内存大小*/wsprintf(chBuf, TEXT ("%dM"), memStatex.dwTotalVirtual / (1024 * 1024));SetDlgItemText(hwnd, IDC_EDIT9, chBuf);/*可用的物理内存*/wsprintf(chBuf, TEXT ("%dM"),memStatex.dwAvailPhys / (1024 * 1024));SetDlgItemText(hwnd, IDC_EDIT11, chBuf);
}/*得到磁盘符号*/
void Show(HWND hwnd)
{DWORD d = GetLogicalDrives();TCHAR temp[5];/*临时储存逻辑磁盘符号*/TCHAR str[10];/*储存逻辑磁盘符号*/int count = 0;/*计数*/ZeroMemory(temp, sizeof(temp) / sizeof(TCHAR));ZeroMemory(str, sizeof(str) / sizeof(TCHAR));/*对字符串清零*/ZeroMemory(str, sizeof(str));while(d > 0){if((d & 1) > 0){/*字符赋值*/temp[0] = 'A' + count;/*字符串连接*/strcat(str,temp);/*字符串清零*/ZeroMemory(temp, sizeof(temp) / sizeof(TCHAR));}/*向右移一位*/d >>= 1;/*计数*/count++;}/*输出磁盘符号*/SetDlgItemText(hwnd, IDC_EDIT10, str);
}//*得到磁盘的类型*/
void Get_Type(LPSTR Name , LPSTR Type)
{ /*t用于判断磁盘的类型*/UINT t = GetDriveType(Name); switch (t){case DRIVE_UNKNOWN:{wsprintf(Type, "%24s", TEXT("未知磁盘类型"));}break;case DRIVE_NO_ROOT_DIR:{wsprintf(Type, "%24s", TEXT("磁盘名无效"));}break;case DRIVE_REMOVABLE:{wsprintf(Type, "%24s", TEXT("可移动磁盘"));}break;case DRIVE_FIXED:{wsprintf(Type, "%24s", TEXT("固定磁盘"));}break;case DRIVE_REMOTE:{wsprintf(Type, "%24s, "TEXT("网络磁盘"));}break;case DRIVE_CDROM:{wsprintf(Type, "%24s", TEXT("光驱"));}break;case DRIVE_RAMDISK:{wsprintf(Type, "%24s", TEXT("RAN"));}break;default:{wsprintf(Type, "%24s", TEXT("GetDriveType的返回值非法"));}}}
/////得到硬盘的空间
void Get_Dist_Space(LPSTR Name, LPSTR Space)
{ULARGE_INTEGER A;/*磁盘的总空间*/ULARGE_INTEGER B;/*磁盘的可用空间*/ULARGE_INTEGER C;/*磁盘的空闲空间*/if ( 0 != GetDiskFreeSpaceEx(Name, &B, &A, &C)){double i1 = ( (double)A.HighPart * pow(2,32) + (double)A.LowPart ) / Memory;/*磁盘的总空间*/double i2 = ( (double)B.HighPart * pow(2,32) + (double)B.LowPart ) / Memory;/*磁盘的可用空间*/double i3 = ( (double)C.HighPart * pow(2,32) + (double)C.LowPart ) / Memory;/*磁盘的空闲空间*/TCHAR str1[10];/*磁盘的总空间*/TCHAR str2[10];/*磁盘可用空间*/TCHAR str3[10];/*磁盘空闲空间*/gcvt(i1, 3, str1);gcvt(i2, 3, str2);gcvt(i3, 3, str3);wsprintf(Space, "%15sG %12sG %12sG", str1, str2, str3);}
}/
/*得到磁盘的信息*/
void Get_Dist_Infro(HWND hwnd)
{/*得到计算机中存在的磁盘*/DWORD d = GetLogicalDrives();TCHAR str[256];/*储存逻辑磁盘符号*/int count = 0;/*计数*//*清零*/ZeroMemory(str, sizeof(str) / sizeof(TCHAR));/*得到ListBox控件的句柄*/HWND hwndList = GetDlgItem(hwnd, IDC_LIST2);/*保存磁盘的类型*/TCHAR Type[256];TCHAR Space[256];/*清零*/ZeroMemory(Type, sizeof(Type) / sizeof(TCHAR));while(d > 0){if((d & 1) > 0){/*字符赋值*/*str = 'A' + count;/*连接磁盘符号和:*/lstrcat(str, ":");/*得到磁盘的类型*/Get_Type(str, Type);Get_Dist_Space(str, Space);/*连接磁盘符号和磁盘类型*/lstrcat(str, Type);lstrcat(str, Space);/*列表显示磁盘的信息*/ListBox_AddString(hwndList, str);/*字符串清零*/ZeroMemory(str, sizeof(str) / sizeof(TCHAR));}/*向右移一位*/d >>= 1;/*计数*/count++;}
}BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{/*得到用户名*/Get_User_Name(hwnd);/*得到计算机名*/Get_Computer_Name(hwnd);/*得到系统的版本*/Get_System_Version(hwnd);/*调用定时器的到系统时间*/SetTimer(hwnd, 0, 1000, TimerProc);/*得到系统的启动时间*/Get_Time(hwnd);/*得到系统启动时间*/SetTimer(hwnd, 1, 1000, GetTime);/*得到内存*/Get_Memory(hwnd);/*得到磁盘符号*/Show(hwnd);/*得到磁盘的信息*/Get_Dist_Infro(hwnd);return TRUE;
}void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{switch(id){case IDC_OK:{}break;default:break;}
}void Main_OnClose(HWND hwnd)
{EndDialog(hwnd, 0);
}
执行结果:(得到的是测试程序的计算机中的信息)
点击此处下载Windows优化大师
Windows优化大师相关推荐
- 利用windows优化大师软件卸载一手和清理一招
清理功能: 首先用windows优化大师注册表清理功能清理一次系统注册表. 第二用windwos优化大师垃圾文件清理功能清理一次系统中的废文件. 通过这两步,可以很好地保持系统的干净,不易出现硬盘内无 ...
- Windows优化大师已经成为“流氓大师”
最近使用Windows优化大师,发现它经常强制性设置IE的搜索提供者,就算你设置了注册表键值相应权限限制它修改,流氓还是会还原注册表权限.还有一次不小心给安装上什么风行网络电视,什么烂鬼风行更流氓,无 ...
- Windows优化大师使用技巧
很多人都用过Windows优化大师,但是很多人不知道Windows优化大师使用技巧,今天小编就来为大家总结Windows优化大师使用技巧让大家更好的使用Windows优化大师. 1.注册表清理和磁盘文 ...
- Windows优化大师7.96版下载
Windows优化大师提供了全面且有效而简便安全的系统检测.系统优化.系统清理.系统维护四大功能模块以及数个附加的工具软件.它能够有效地帮助用户了解自己的计算机软硬件信息:简化操作系统设置步骤:提升计 ...
- 优化计算机的主要操作,windows优化大师能执行哪些主要操作_windows优化大师使用教程有哪些信息?...
Windows优化大师是针对用户在进行电脑性能辅助优化时必须要使用的一款工具,这种工具有非常强大的功能,能够帮助用户在电脑应用过程中辅助的优化电脑系统经过优化之后,可以让用户的电脑快速的运转起来,wi ...
- Windows优化大师之驱动智能备份
驱动程序是一个小型的系统级程序,它能够使特定的硬件和软件与操作系统建立联系,让操作系统能够正常运行并启用该设备.如果您正准备添加某些新的设备,操作系统不会知道如何处理它.但是当您安装了驱动程序后,操作 ...
- win10 SystemParametersInfo 设置屏保 不好使_win10优化软件用什么?来看一看这款:windows优化大师 win10...
win10优化软件用什么?来看一看这款:windows优化大师 win10 win10 专业版新系统与其它系统相比,已做过很多优化了,但还有很多用户想让win10系统更快一点,windows10优化设 ...
- windows优化大师怎么用_电脑图标变了怎么办
电脑被查杀病毒之后,然后重启电脑,打开发现桌面上的我的电脑图标变了,为什么出现这个故障呢.我的电图标变了怎么办呢?造成我的电脑图标原因有很多.请听小编慢慢讲来. 方法一.鼠标右键单击桌面空白处,然后选 ...
- Windows优化大师 V7.7
(网上收集整理) 软件大小:3762KB 软件类别:国产软件/系统设置 软件授权:共享版 软件语言:简体中文 运行环境:Win9x/Me/NT/2000/XP/2003/Vista 官方主页:[ur ...
最新文章
- 在做性能测试之前需要知道什么
- 机器视觉 · 网络相机
- 田志刚:致《你的知识需要管理》读者
- EEPROM和flash的区别
- Linux vim 快捷键
- aggregations 详解1(概述)
- 什么是负边沿触发_用好示波器必须学会的知识:触发方式
- expect java_expect命令
- iOS开发之UIView常用的一些方法小记之setNeedsDisplay和setNeedsLayout
- 拓端tecdat|R语言无监督学习:PCA主成分分析可视化
- linux版本i686,在Ubuntu中'i686'是什么意思? - Ubuntu问答
- cocos2d-js 3.0 ios平台编译打包
- 使用Unity动作融合概述
- 程序员刷简历领导看见很寒心,网友:找工作也要经过你同意?
- 数据结构系列笔记——图
- Android开发中三星手机拍照异常处理
- MIROInvoiceBlockSetTolerancelimitsEnhancement_SAP刘梦_新浪博客
- 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day14-面向对象进阶02
- 看过来看过来|自媒体创作者今日运势:宜学习短视频配音技巧
- 【期刊】基于 Python 的新浪微博数据爬虫