Windows优化大师
来源:互联网 发布:淘宝重复开店不查了 编辑:程序博客网 时间:2024/05/01 02:09
看了杨中科老师的《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优化大师
0 0
- Windows优化大师
- Windows优化大师域名解析问题
- WINDOWS优化大师揭密
- WINDOWS优化大师揭密
- Windows优化大师使用技巧
- Windows优化大师注册机源码
- Windows优化大师注册机源码
- Windows优化大师的一点研究
- Windows优化大师7.96版下载
- 用CCleaner替换了Windows优化大师
- Windows优化大师x.xx注册机源码
- 逆向工程日记2--WINDOWS优化大师
- windows优化大师和闪游浏览器
- Windows优化大师 V7.74 Build 7.702 (2007-07-02)
- Windows 优化大师 V7.75 Build 7.0806 绿色光盘版
- Windows优化大师 V7.81 Build 8.408 专业破解版
- ubuntu上测试IE网银和windows优化大师(图)
- 是linux还是windows,directx和优化大师都错了。
- POJ 1577 Falling Leaves 二叉树题解
- 正则表达式学习笔记与经验总结
- Servlet 工作原理解析
- HDU 1272 小希的迷宫
- git命令
- Windows优化大师
- python实现堆排及快排算法
- iOS多线程GCD
- 在win7+vs2010下安装WTL向导出错--Cannot copy file,没有权限。
- struts2传值问题
- java数组的赋值问题
- qsort排序
- Python操作MySQL数据库--插入、更新、查询(二)
- 酷炫的直升机和介绍去google工作的几篇文章