MFC定时关机程序的实现1

写个定时关机程序自用,界面简单实用,最终界面如下

第一步,新建一个MFC对话框应用程序,拖几个控件过来,

界面如下:

然后给下拉列表框,复选按钮绑定变量,以方便进行操作。

  CComboBox m_com_hour;
  CComboBox m_com_minute;
  CComboBox
m_com_second;

第二步,先实现简单关机功能,不通过文件读写进行关键。在选择过时间后,确定关机后按时关机。

  1,给下拉列表框添加更改事件,直接右键控件->选择添加事件处理程序,选择CBN_SELCHANGE

  然后编辑代码,添加如下:


1 void CAutoShutDownDlg::OnCbnSelchangeCombo1()//时
2 {
3 // TODO: 在此添加控件通知处理程序代码
4 int sel = 0;
5 sel = m_com_hour.GetCurSel();//这个是获取当前鼠标选择的时间的索引,从零开始的
6 hour = sel;//hour是添加的成员变量,还有minute和second,这就是关机时间
7 }

  还有其他的分钟和秒类似这个,这里不多说了,代码如下

 1 void CAutoShutDownDlg::OnCbnSelchangeCombo2()//分
2 {
3 // TODO: 在此添加控件通知处理程序代码
4 int sel = 0;
5 sel = m_com_minute.GetCurSel();
6 minute = sel;
7 }
8
9
10 void CAutoShutDownDlg::OnCbnSelchangeCombo3()//秒
11 {
12 // TODO: 在此添加控件通知处理程序代码
13 int sel = 0;
14 sel = m_com_second.GetCurSel();
15 second = sel;
16 }

View
Code

现在可以获取程序中选择的时间了,然后就是获取这些信息,在单击过确定按钮后弹出确认窗口,确认关机时间。

  在资源窗口直接双击确认按钮进入按钮按下消息响应程序


 1 void CAutoShutDownDlg::OnBnClickedOk()
2 {
3 // TODO: 在此添加控件通知处理程序代码
4 //复选框是否选中,这个处理是否添加开机启动项,后面再说这个
5 UINT ischecked = IsDlgButtonChecked(IDC_CHECK1);
6
7 //获取选择的时间
8 hour = m_com_hour.GetCurSel();
9 minute = m_com_minute.GetCurSel();
10 second = m_com_second.GetCurSel();
11
12 //数据进行格式化处理
13 CString str = "";
14 str.Format("%2d时%2d分%2d秒", hour, minute, second);
15 // GetDlgItem(IDC_STATIC_NOW)->SetWindowText(str);
16 int resoult = MessageBox("确定要在"+str+"关机吗?","是否关机?",MB_OKCANCEL);
17 if (resoult == IDOK)
18 {
19 //是否添加到启动项,这里用来检查是否写入到开机启动项,直接写入注册表,这个后面再说
20 AutoStart(ischecked);
21 //更新程序窗口中显示的关机时间
22 GetDlgItem(IDC_STATIC_SHUT)->SetWindowText(str);
23
24 FILE *file;
25 int err;
26 err = fopen_s(&file, "c:\\ShutDownTime.txt", "w+");
27 if (!err)
28 {
29 err = fprintf_s(file, "%02d%02d%02d",hour, minute, second);
30 if (err == EOF)
31 {
32 MessageBox("请重试!");
33 }
34 }
35 else
36 {
37 MessageBox("文件打开错误");
38 }
39 if (fclose(file) != 0)
40 {
41 MessageBox("文件关闭错误");
42 }
43
44 }
45 }

现在来看看OnInitDialog()函数里做了什么

  这里主要用来读取上次保存的关机时间


 1 //读取软件设置的默认时间
2 FILE *file;
3 errno_t err;
4 err = fopen_s(&file, "c:\\ShutDownTime.txt", "a+");
5 if (!err)
6 {
7 fscanf_s(file, "%02d%02d%02d",&hour, &minute, &second);
8 }
9 else
10 {
11 MessageBox("文件打开错误");
12 }
13 if (fclose(file) != 0)
14 {
15 MessageBox("文件关闭错误");
16 }
17 str = "";
18 str.Format("%2d时%2d分%2d秒", hour, minute, second);
19 GetDlgItem(IDC_STATIC_SHUT)->SetWindowText(str);
20 SetTimer(0,100,NULL);//定时刷新当前时间
21 SetTimer(1, 1000, NULL);//定时检查是否到达关机时间

  这里主要用了两个定时器来检查关机时间。

  还有一个默认显示的关机时间,当第一次打开程序时,并没有关机时间,这里默认现在当前的时间,关机时间会在确认关机后更新。


 1     GetTime();//获取当前时间,自定义的成员函数
2 CString str = "";
3 str.Format("%2d时%2d分%2d秒", hour, minute, second);
4 GetDlgItem(IDC_STATIC_NOW)->SetWindowText(str);
5
6
7 int temp = 0;
8 int i = 0;
9 //设置默认显示的小时
10 str = "";
11 for (i = 0; i <= 23; i++)
12 {
13 str.Format("%2d时", i);
14 m_com_hour.AddString(str);
15 }
16 m_com_hour.SetCurSel(hour);
17 //设置默认显示的分钟
18 str = "";
19
20 for (i = 0; i <= 59; i++)
21 {
22 str.Format("%2d分", i);
23 m_com_minute.AddString(str);
24 }
25 m_com_minute.SetCurSel(minute);
26 //设置默认显示的妙
27 str = "";
28
29 for (i = 0; i <= 59; i++)
30 {
31 str.Format("%2d秒", i);
32 m_com_second.AddString(str);
33 }
34 m_com_second.SetCurSel(second);

其中GetTime()为自定义的成员函数,用于获取当前时间


1 void CAutoShutDownDlg::GetTime()
2 {
3 CTime time1 = CTime::GetCurrentTime();//获取系统当前时间
4 hour = time1.GetHour();
5 minute = time1.GetMinute();
6 second = time1.GetSecond();
7 }

  现在能实现关机了,不过程序没法最小化到任务栏,实在不方便,明天继续研究这个。

时间: 2024-08-08 14:03:15

MFC定时关机程序的实现1的相关文章

MFC定时关机程序的实现2-添加启动项到注册表

虽然上一篇实现了的定时关机,但是还不够完善,比如开机自动启动,然后按照配置的时间定时关机,并最小化到任务栏. 先来说开机启动怎么实现,开机启动实现的方法有好几种,比如直接在开始菜单启动项里添加一个程序的快捷方式,路径为 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\ 不过这个路径不同的电脑可能不一样,因为这个路径可以改变,比如说改到D盘 也可以直接写入注册表,这个比较方便,这个开机启动项在注册表中的路径是 HKEY_CU

C语言 -- 定时关机程序

<strong><span style="font-size:14px;">C语言  --  定时关机程序</span></strong> <strong></strong><span style="font-size:14px;"></span> <strong><span style="font-size:14px;">特别

用Win32写的定时关机程序

由于本人记性不太好,晚上经常忘记关电脑,白白浪费了很多的电.在网上也找了一些定时关机的软件,想到最近自己也在学习VC++,就想自己写一个定时关机的小程序,正好也可以检验自己所学的东西. 程序源码下载地址:点击下载 先来看看效果图: 写的比较简陋,但是只要能实现功能就好了. 写Win32应用程序首先要有WinMain函数: int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR    lpCmdLine

C# 简单的定时关机

1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace AutoCloseComputer 11 { 12 public pa

C++教程:C语言定时关机小程序

今天给大家带俩一个C语言小程序的分享,需要实际应用的作用不大,但是,绝对是对你有帮助的!今后小编都会定期发布一些:一个C语言小程序源码+注释+解答,来丰富大家的知识! #include<stdio.h> #include<string.h> #include<stdlid.h> void main() { char cmd[20]="shutdown -s -t "; char t[5]="0"; int c; system(&q

Mac定时关机、重启、休眠命令行

由于一些原因(程序员都懂得),需要在不上班的时间去连公司电脑来做一些事.所以公司电脑很少关机.但是在没多天没有关机以后电脑会变得很卡.所以现在每天早上去公司的第一件事情就是先重启一下电脑.人工重启,太不符合程序员的作风了.于是,就想到了用命令行定时关机重启. 命令非常简单: 关机: sudo shutdown -h yymmddhhmm 重启: sudo shutdown -r yymmddhhmm 休眠: sudo shutdown -s yymmddhhmm 其中yymmddhhmm是指的某

visual c#设计的多功能关机程序

Visual C# 设计多功能关机程序 许多软件都有自动关机功能, 特别是在长时间 下载 的时候, 这个功能可是使你不用以守候在计算机前面, 而电脑却能按照 您事先的设定自动关闭.现在我们用 visual C# 来编写一个多功能的关机程序.该程序具有:定时关机.倒计时关机.关机 提醒.系统信息获取等四项功能 , 可设定关机时间精确到秒.并且让你很快掌握 Visual C# 中对 API 的操作程序. 一 . 设计关闭 Windows 窗体 界面的设计 新建一个标准工程,向工程中增加一个 Wind

XP的定时关机命令?

Windows XP的关机是由Shutdown.exe程序来控制的,位于Windows/System32文件夹中.如 果想让Windows 2000也实现相同的效果,能够把Shutdown.exe拷贝到系统文件夹下. 比方你的电脑要在22:00关机,能够选择“開始→执行”,输入“at 22:00 Shutdown -s”, 这样,到了22点电脑就会出现“系统关机”对话框,默认有30秒钟的倒计时并提示你保存工 作.假设你想以倒计时的方式关机,能够输入“Shutdown.exe -s -t 3600

Windows 自动关机/定时关机 命令 shuntdown

一 .倒计时关机:      指定系统在10分钟后自动关闭:点击"开始→运行",输入命令"Shutdown -s -t 60"(注意:引号不输入,参数之间有空格,60的单位是秒),单击"确定"按钮即可. 二 .定时关机:      指定系统在某个时间(比如12:00)自动关闭:点击"开始→运行",输入命令 "at 12:00 Shutdown -s"即可. 三 .取消定时关机:         点击&quo