智能关机系统
来源:互联网 发布:微博怎么推广淘宝店铺 编辑:程序博客网 时间:2024/04/29 07:33
最近在网上看到了一个智能关机系统,看起来感觉功能不错,就想自己写一个,说干就干,使用如鹏网的VC6.0开发向导可以很轻松的搭建好一个界面
我的界面如下
程序模块:
控件名和控件的ID(由于表格的限制只给出了部分的控件名和控件的ID其它的请参考代码)
控件名
控件ID
当前日期(static控件)
IDC_STATIC
年(static控件)
IDC_STATIC
月(static控件)
IDC_STATIC
日(static控件)
IDC_STATIC
星期(static控件)
IDC_STATIC
年(edit控件)
IDC_EDIT3
月(edit控件)
IDC_EDIT4
日(edit控件)
IDC_EDIT5
星期(edit控件)
IDC_EDIT9
当前时间(static控件)
IDC_STATIC
时(static控件)
IDC_STATIC
分(static控件)
IDC_STATIC
秒(static控件)
IDC_STATIC
时(edit控件)
IDC_EDIT6
分(edit控件)
IDC_EDIT7
秒(edit控件)
IDC_EDIT8
预设时间(static控件)
IDC_STATIC
年(edit控件)
IDC_EDIT10
月(edit控件)
IDC_EDIT11
日(edit控件)
IDC_EDIT12
时(edit控件)
IDC_EDIT13
函数模块:
函数名
函数功能
is_strcmp
判断星期
TimerProc
时间回调函数(显示时间)
TimerProc1
回调函数(用于定时关机)
TimerProc2
回调函数(用于定时重启)
TimerProc3
定时关闭显示器
程序代码:
#include "stdafx.h"#include <windows.h>#include <windowsx.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 is_strcmp(HWND hwnd,TCHAR*str){if(0 == lstrcmp(str ,"1")){SetDlgItemText(hwnd,IDC_EDIT9,"一");}if(0 == lstrcmp(str,"2")){SetDlgItemText(hwnd,IDC_EDIT9,"二");}if(0 == lstrcmp(str,"3")){SetDlgItemText(hwnd,IDC_EDIT9,"三");}if(0 == lstrcmp(str,"4")){SetDlgItemText(hwnd,IDC_EDIT9,"四");}if(0 == lstrcmp(str,"5")){SetDlgItemText(hwnd,IDC_EDIT9,"五");}if(0 == lstrcmp(str,"6")){SetDlgItemText(hwnd,IDC_EDIT9,"六");}if(0 == lstrcmp(str,"0")){SetDlgItemText(hwnd,IDC_EDIT9,"日");}}/*定时器;显示时间*/void CALLBACK TimerProc(HWND hwnd, UINT message,UINT iTimerID, DWORD dwTime){TCHAR strYear[256]; /*用于保存当前时间:年*/TCHAR strMonth[256]; /*用于保存当前时间:月*/TCHAR strDay[256]; /*用于保存当前时间:日*/TCHAR strHour[256]; /*用于保存当前时间:时*/TCHAR strMinute[256];/*用于保存当前时间:分*/TCHAR strScond[256]; /*用于保存当前时间:秒*/TCHAR strWeek[256];/*用于保存当前时间:星期*/SYSTEMTIME stLock; /*时间结构*/GetLocalTime(&stLock);/*得到系统时间*/wsprintf(strYear, "%d", stLock.wYear );/*年*/ SetDlgItemText(hwnd, IDC_EDIT3, strYear );/*年*/ SetDlgItemText(hwnd, IDC_EDIT10, strYear );/*在预设时间中显示当前时间*/wsprintf(strMonth, "%d", stLock.wMonth );/*月*/SetDlgItemText(hwnd, IDC_EDIT4, strMonth );/*月*/SetDlgItemText(hwnd, IDC_EDIT11, strMonth );/*在预设时间中显示当前时间*/wsprintf(strDay, "%d", stLock.wDay ); /*日*/SetDlgItemText(hwnd, IDC_EDIT5, strDay );/*日*/SetDlgItemText(hwnd, IDC_EDIT12, strDay );/*在预设时间中显示当前时间*/wsprintf(strHour, "%d", stLock.wHour );/*时*/SetDlgItemText(hwnd, IDC_EDIT6, strHour );/*时*/wsprintf(strMinute, "%d", stLock.wMinute );/*分*/SetDlgItemText(hwnd, IDC_EDIT7, strMinute );/*分*/wsprintf(strScond, "%d", stLock.wSecond); /*秒*/SetDlgItemText(hwnd, IDC_EDIT8, strScond );/*秒*/wsprintf(strWeek, "%d", stLock.wDayOfWeek);/*星期*/is_strcmp(hwnd,strWeek);/*调用is_strcmp函数修改星期*/}/*回掉函数:定时关机*/void CALLBACK TimerProc1(HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime){KillTimer(hwnd,2);KillTimer(hwnd,3);TCHAR strHour[256]; /*用于保存当前时间:时*/TCHAR strMinute[256];/*用于保存当前时间:分*/TCHAR strScond[256]; /*用于保存当前时间:秒*/SYSTEMTIME stLock; /*时间结构*/GetLocalTime(&stLock);/*得到系统时间*/wsprintf(strHour, "%d", stLock.wHour );/*时*/SetDlgItemText(hwnd, IDC_EDIT6, strHour );/*时*/wsprintf(strMinute, "%d", stLock.wMinute );/*分*/SetDlgItemText(hwnd, IDC_EDIT7, strMinute );/*分*/wsprintf(strScond, "%d", stLock.wSecond); /*秒*/SetDlgItemText(hwnd, IDC_EDIT8, strScond );/*秒*/TCHAR Hour[256]; /*保存用户定义的关机时间:时*/TCHAR Minute[256];/*保存用户定义的关机时间:分*/TCHAR Second[256];/*保存用户定义的关机时间:秒*/GetDlgItemText(hwnd,IDC_EDIT13,Hour,sizeof(Hour));/*时*/GetDlgItemText(hwnd,IDC_EDIT14,Minute,sizeof(Minute));/*分*/GetDlgItemText(hwnd,IDC_EDIT15,Second,sizeof(Second));/*秒*/if(0 == lstrcmp(strHour,Hour)){if(0 == lstrcmp(strMinute,Minute)){if(0 == lstrcmp(strScond,Second)){/*Dos命令中的关机命令*/system("shutdown -s -t 0");}}}int total1;/*系统时间总和*/int total2;/*预设时间总和*/int total3;/*剩余时间总和*/total1 = stLock.wHour * 3600 + stLock.wMinute * 60 + stLock.wSecond;/*系统时间的总和(秒)*/total2 = atoi(Hour) * 3600 + atoi(Minute) * 60 + atoi(Second);/*预设时间总和(秒)*/total3 = total2 - total1;/*剩余时间总和(秒)*/int HOUR;/*时*/int MINUTE;/*分*/int SECOND;/*秒*/HOUR = total3 / 3600;/*剩余时间(时)*/MINUTE = (total3 % 3600) / 60;/*剩余时间(分)*/SECOND = (total3 % 3600) % 60;/*剩余时间(秒)*/TCHAR hour[256];/*存放剩余时间:时*/TCHAR minute[256];/*存放剩余时间:分*/TCHAR second[256];/*存放剩余时间:秒*/wsprintf(hour, "%d", HOUR);wsprintf(minute, "%d", MINUTE);wsprintf(second, "%d", SECOND);SetDlgItemText(hwnd,IDC_EDIT16,hour);/*显示剩余时间:(时)*/SetDlgItemText(hwnd,IDC_EDIT17,minute);/*显示剩余时间:(分)*/SetDlgItemText(hwnd,IDC_EDIT18,second);/*显示剩余时间;(秒)*/}/*回掉函数:定时重新启动*/void CALLBACK TimerProc2(HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime){KillTimer(hwnd,1);KillTimer(hwnd,3);TCHAR strHour[256]; /*用于保存当前时间:时*/TCHAR strMinute[256];/*用于保存当前时间:分*/TCHAR strScond[256]; /*用于保存当前时间:秒*/SYSTEMTIME stLock; /*时间结构*/GetLocalTime(&stLock);/*得到系统时间*/wsprintf(strHour, "%d", stLock.wHour );/*时*/SetDlgItemText(hwnd, IDC_EDIT6, strHour );/*时*/wsprintf(strMinute, "%d", stLock.wMinute );/*分*/SetDlgItemText(hwnd, IDC_EDIT7, strMinute );/*分*/wsprintf(strScond, "%d", stLock.wSecond); /*秒*/SetDlgItemText(hwnd, IDC_EDIT8, strScond );/*秒*/TCHAR Hour[256]; /*保存用户定义的关机时间:时*/TCHAR Minute[256];/*保存用户定义的关机时间:分*/TCHAR Second[256];/*保存用户定义的关机时间:秒*/GetDlgItemText(hwnd,IDC_EDIT13,Hour,sizeof(Hour));/*时*/GetDlgItemText(hwnd,IDC_EDIT14,Minute,sizeof(Minute));/*分*/GetDlgItemText(hwnd,IDC_EDIT15,Second,sizeof(Second));/*秒*/if(0 == lstrcmp(strHour,Hour)){if(0 == lstrcmp(strMinute,Minute)){if(0 == lstrcmp(strScond,Second)){/*Dos命令中的关机命令*/system("shutdown -r -t 0");}}}int total1;/*系统时间总和*/int total2;/*预设时间总和*/int total3;/*剩余时间总和*/total1 = stLock.wHour * 3600 + stLock.wMinute * 60 + stLock.wSecond;/*系统时间的总和(秒)*/total2 = atoi(Hour) * 3600 + atoi(Minute) * 60 + atoi(Second);/*预设时间总和(秒)*/total3 = total2 - total1;/*剩余时间总和(秒)*/int HOUR;/*时*/int MINUTE;/*分*/int SECOND;/*秒*/HOUR = total3 / 3600;/*剩余时间(时)*/MINUTE = (total3 % 3600) / 60;/*剩余时间(分)*/SECOND = (total3 % 3600) % 60;/*剩余时间(秒)*/TCHAR hour[256];/*存放剩余时间:时*/TCHAR minute[256];/*存放剩余时间:分*/TCHAR second[256];/*存放剩余时间:秒*/wsprintf(hour, "%d", HOUR);wsprintf(minute, "%d", MINUTE);wsprintf(second, "%d", SECOND);SetDlgItemText(hwnd,IDC_EDIT16,hour);/*显示剩余时间:(时)*/SetDlgItemText(hwnd,IDC_EDIT17,minute);/*显示剩余时间:(分)*/SetDlgItemText(hwnd,IDC_EDIT18,second);/*显示剩余时间;(秒)*/}/*回掉函数:定时关闭显示器*/void CALLBACK TimerProc3(HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime){KillTimer(hwnd,1);KillTimer(hwnd,2);TCHAR strHour[256]; /*用于保存当前时间:时*/TCHAR strMinute[256];/*用于保存当前时间:分*/TCHAR strScond[256]; /*用于保存当前时间:秒*/SYSTEMTIME stLock; /*时间结构*/GetLocalTime(&stLock);/*得到系统时间*/wsprintf(strHour, "%d", stLock.wHour );/*时*/SetDlgItemText(hwnd, IDC_EDIT6, strHour );/*时*/wsprintf(strMinute, "%d", stLock.wMinute );/*分*/SetDlgItemText(hwnd, IDC_EDIT7, strMinute );/*分*/wsprintf(strScond, "%d", stLock.wSecond); /*秒*/SetDlgItemText(hwnd, IDC_EDIT8, strScond );/*秒*/TCHAR Hour[256]; /*保存用户定义的关机时间:时*/TCHAR Minute[256];/*保存用户定义的关机时间:分*/TCHAR Second[256];/*保存用户定义的关机时间:秒*/GetDlgItemText(hwnd,IDC_EDIT13,Hour,sizeof(Hour));/*时*/GetDlgItemText(hwnd,IDC_EDIT14,Minute,sizeof(Minute));/*分*/GetDlgItemText(hwnd,IDC_EDIT15,Second,sizeof(Second));/*秒*/if(0 == lstrcmp(strHour,Hour)){if(0 == lstrcmp(strMinute,Minute)){if(0 == lstrcmp(strScond,Second)){/*关闭显示器*/SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM)2);}}}int total1;/*系统时间总和*/int total2;/*预设时间总和*/int total3;/*剩余时间总和*/total1 = stLock.wHour * 3600 + stLock.wMinute * 60 + stLock.wSecond;/*系统时间的总和(秒)*/total2 = atoi(Hour) * 3600 + atoi(Minute) * 60 + atoi(Second);/*预设时间总和(秒)*/total3 = total2 - total1;/*剩余时间总和(秒)*/int HOUR;/*时*/int MINUTE;/*分*/int SECOND;/*秒*/HOUR = total3 / 3600;/*剩余时间(时)*/MINUTE = (total3 % 3600) / 60;/*剩余时间(分)*/SECOND = (total3 % 3600) % 60;/*剩余时间(秒)*/TCHAR hour[256];/*存放剩余时间:时*/TCHAR minute[256];/*存放剩余时间:分*/TCHAR second[256];/*存放剩余时间:秒*/wsprintf(hour, "%d", HOUR);wsprintf(minute, "%d", MINUTE);wsprintf(second, "%d", SECOND);SetDlgItemText(hwnd,IDC_EDIT16,hour);/*显示剩余时间:(时)*/SetDlgItemText(hwnd,IDC_EDIT17,minute);/*显示剩余时间:(分)*/SetDlgItemText(hwnd,IDC_EDIT18,second);/*显示剩余时间;(秒)*/}/*程序初始化*/BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam){/*调用计时器,1秒钟调用一次TimerProc函数*/SetTimer(hwnd,0,1000,TimerProc);/*用于显示时间*/return TRUE;}void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify){HWND hwndCheck1 = GetDlgItem(hwnd,IDC_CHECK);HWND hwndCheck2 = GetDlgItem(hwnd, IDC_CHECKRESET);HWND hwndCheck3 = GetDlgItem(hwnd,IDC_CHECKCLOSE);switch(id) { case IDC_CHECK:/*关机*/{/*定时关机*/SetTimer(hwnd,0,1000,TimerProc1);}break;case IDC_CHECKRESET:/*重新启动*/{SetTimer(hwnd,0,1000,TimerProc2);}break;case IDC_CHECKCLOSE:/*关闭显示器*/{SetTimer(hwnd,0,1000,TimerProc3);}break; case IDC_START:{int index1 = Button_GetCheck(hwndCheck1);int index2 = Button_GetCheck(hwndCheck2);int index3 = Button_GetCheck(hwndCheck3); if(BST_CHECKED == index1){ /*回掉函数:定时关机*/ MessageBox(hwnd,TEXT("计算机将关闭"),TEXT("提示"),MB_OK);} if(BST_CHECKED == index2){ /*回掉函数:定时重新启动*/ MessageBox(hwnd,TEXT("计算机将重新启动"),TEXT("提示"),MB_OK);}if(BST_CHECKED == index3){ /*回掉函数:定时关闭显示器*/ MessageBox(hwnd,TEXT("显示器将关闭"),TEXT("提示"),MB_OK);}}break; case IDC_CANCEL: { MessageBox(hwnd,TEXT("取消计时"),TEXT("提示"),MB_OK); exit(-1); } break; case IDC_CLOSE:/*关机*/{ /*Dos命令中的关机命令*/system("shutdown -s -t 0");} break;case IDC_RESET:/*重新启动*/{ /*Dos命令中的重新启动命令*/system("shutdown -r -t 0");}break;case IDC_CLOSE1:/*关闭显示器*/{/*关闭显示器*/SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM)2);}break; default:break; }}void Main_OnClose(HWND hwnd){ EndDialog(hwnd, 0);}
程序执行结果:
设置2014年6月21日20:45:0关机
程序还可以关闭显示器 、重新启动、在此我不再一一演示
单击此处下载程序
- 智能关机系统
- window 定时关机 (夜间智能定时关机)
- 系统关机变重启故障
- android系统关机流程
- android系统关机流程
- 系统定时关机命令
- 禁止WIN32系统关机
- android系统关机流程
- 5.2.37 系统关机
- android系统关机流程
- xp系统定时关机
- 捕获系统关机
- linux系统定时关机
- xp系统关机快捷键
- 【基础】linux系统-->关机
- 系统关机助手
- Android实现系统关机
- android程序控制系统关机
- Java学习总结16——Java RMI之HelloWorld篇
- CATextLayer类
- sql系列(基础篇)-第二章 约束和排序数据
- python序列
- C#中常用的分页存储过程小结
- 智能关机系统
- Microsoft SQL Server 2008技术内幕:T-SQL语言基础 第二章课后练习答案
- FPGA视频图像之高清需要多大的ddr2之二
- 【ubuntu】Ubuntu安装chrome浏览器,搜狗输入法
- 字符集字符编码学习
- 3D模型格式总结
- 聚美优品面试题
- Xcode6 自动补全的问题 no completion
- java4:选择语句(selection),逻辑运算,循环(loop)