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

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

然后给下拉列表框,复选按钮绑定变量,以方便进行操作。
CComboBox m_com_hour;
CComboBox m_com_minute;
CComboBox m_com_second;
第二步,先实现简单关机功能,不通过文件读写进行关键。在选择过时间后,确定关机后按时关机。
1,给下拉列表框添加更改事件,直接右键控件->选择添加事件处理程序,选择CBN_SELCHANGE

然后编辑代码,添加如下:
void CAutoShutDownDlg::OnCbnSelchangeCombo1()//时
{
// TODO: 在此添加控件通知处理程序代码
int sel = ;
sel = m_com_hour.GetCurSel();//这个是获取当前鼠标选择的时间的索引,从零开始的
hour = sel;//hour是添加的成员变量,还有minute和second,这就是关机时间
}
还有其他的分钟和秒类似这个,这里不多说了,代码如下
void CAutoShutDownDlg::OnCbnSelchangeCombo2()//分
{
// TODO: 在此添加控件通知处理程序代码
int sel = ;
sel = m_com_minute.GetCurSel();
minute = sel;
} void CAutoShutDownDlg::OnCbnSelchangeCombo3()//秒
{
// TODO: 在此添加控件通知处理程序代码
int sel = ;
sel = m_com_second.GetCurSel();
second = sel;
}
现在可以获取程序中选择的时间了,然后就是获取这些信息,在单击过确定按钮后弹出确认窗口,确认关机时间。
在资源窗口直接双击确认按钮进入按钮按下消息响应程序
void CAutoShutDownDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//复选框是否选中,这个处理是否添加开机启动项,后面再说这个
UINT ischecked = IsDlgButtonChecked(IDC_CHECK1); //获取选择的时间
hour = m_com_hour.GetCurSel();
minute = m_com_minute.GetCurSel();
second = m_com_second.GetCurSel(); //数据进行格式化处理
CString str = "";
str.Format("%2d时%2d分%2d秒", hour, minute, second);
// GetDlgItem(IDC_STATIC_NOW)->SetWindowText(str);
int resoult = MessageBox("确定要在"+str+"关机吗?","是否关机?",MB_OKCANCEL);
if (resoult == IDOK)
{
//是否添加到启动项,这里用来检查是否写入到开机启动项,直接写入注册表,这个后面再说
AutoStart(ischecked);
//更新程序窗口中显示的关机时间
GetDlgItem(IDC_STATIC_SHUT)->SetWindowText(str); FILE *file;
int err;
err = fopen_s(&file, "c:\\ShutDownTime.txt", "w+");
if (!err)
{
err = fprintf_s(file, "%02d%02d%02d",hour, minute, second);
if (err == EOF)
{
MessageBox("请重试!");
}
}
else
{
MessageBox("文件打开错误");
}
if (fclose(file) != )
{
MessageBox("文件关闭错误");
} }
}
现在来看看OnInitDialog()函数里做了什么
这里主要用来读取上次保存的关机时间
//读取软件设置的默认时间
FILE *file;
errno_t err;
err = fopen_s(&file, "c:\\ShutDownTime.txt", "a+");
if (!err)
{
fscanf_s(file, "%02d%02d%02d",&hour, &minute, &second);
}
else
{
MessageBox("文件打开错误");
}
if (fclose(file) != )
{
MessageBox("文件关闭错误");
}
str = "";
str.Format("%2d时%2d分%2d秒", hour, minute, second);
GetDlgItem(IDC_STATIC_SHUT)->SetWindowText(str);
SetTimer(,,NULL);//定时刷新当前时间
SetTimer(, , NULL);//定时检查是否到达关机时间
这里主要用了两个定时器来检查关机时间。
还有一个默认显示的关机时间,当第一次打开程序时,并没有关机时间,这里默认现在当前的时间,关机时间会在确认关机后更新。
GetTime();//获取当前时间,自定义的成员函数
CString str = "";
str.Format("%2d时%2d分%2d秒", hour, minute, second);
GetDlgItem(IDC_STATIC_NOW)->SetWindowText(str); int temp = ;
int i = ;
//设置默认显示的小时
str = "";
for (i = ; i <= ; i++)
{
str.Format("%2d时", i);
m_com_hour.AddString(str);
}
m_com_hour.SetCurSel(hour);
//设置默认显示的分钟
str = ""; for (i = ; i <= ; i++)
{
str.Format("%2d分", i);
m_com_minute.AddString(str);
}
m_com_minute.SetCurSel(minute);
//设置默认显示的妙
str = ""; for (i = ; i <= ; i++)
{
str.Format("%2d秒", i);
m_com_second.AddString(str);
}
m_com_second.SetCurSel(second);
其中GetTime()为自定义的成员函数,用于获取当前时间
void CAutoShutDownDlg::GetTime()
{
CTime time1 = CTime::GetCurrentTime();//获取系统当前时间
hour = time1.GetHour();
minute = time1.GetMinute();
second = time1.GetSecond();
}
现在能实现关机了,不过程序没法最小化到任务栏,实在不方便,明天继续研究这个。
MFC定时关机程序的实现1的更多相关文章
- MFC定时关机程序的实现3-最小化到托盘栏
这个定时关机运行过后默认最小化到托盘栏最好了,不用每次都去点了. 现在来看看如何将程序显示在托盘栏. 首先在头文件里声明一个变量和一个消息响应函数 //最小化到托盘栏 //第一步,生成一个成员变量,或 ...
- MFC定时关机程序的实现2-添加启动项到注册表
虽然上一篇实现了的定时关机,但是还不够完善,比如开机自动启动,然后按照配置的时间定时关机,并最小化到任务栏. 先来说开机启动怎么实现,开机启动实现的方法有好几种,比如直接在开始菜单启动项里添加一个程序 ...
- 我的定时关机程序(MFC实现) .
原理: 利用定时器去检查,如输入的是多少分钟后关机,就根据输入的分钟数产生一个COUNT计数器,计数器一直递减,直到1,然后执行关机.如输入的是几时几分关机,那么定时器会每次都检查系统的时间和你输入的 ...
- window 定时关机小程序bat
复制以下文本,新建txt文件并修改为bat后缀 如图: @echo off title 定时关机 echo 定时关机程序 echo ---------------------------------- ...
- C# 简单的定时关机
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- MFC入门(二)-- 提取输入框的字符串(定时关机的小程序)
上篇文章已经让我们有了对于MFC最简单直观的认识,但貌似并无太大的交互性可言,而且其实也没有涉及到数据的交互,所以本文通过做一个时间可以调节的定时关机的Demo来演示. MFC入门(一)地址:http ...
- 【转载】Win7利用任务计划程序实现定时关机
在Win7.Win8或者Win10系统中,如果要实现电脑的自动定时关机,不需要借用任何的外部程序,直接系统自带的任务计划程序即可实现电脑的定时自动关机,支持设定电脑关机时间以及执行频率次数,如固定每天 ...
- JAVA定时关机小程序
大一刚学java时候做的小程序.由于当时迅雷还没有下载完成关机,晚上要下很多学习资料.只有自己算时间然后通过shutdown命令设置时间关机. 当时通过shutwodn命令,想到能否通过java做一个 ...
- Windows: 在系统启动时运行程序、定时计划任务、定时关机
lesca今天介绍一些让系统在启动时,而非登录时,加载用户自定义的应用程序或脚本的方法,推荐度从前到后依次递减. 1. Windows任务计划(task scheduler) 用户可以按以下步骤进行操 ...
随机推荐
- 新建framework的bundle资源 linker command failed with exit code 1解決
enable bitcode 设为no
- [转]Cannot deserialize the current JSON array (e.g. [1,2,3]) into type
string content =[{"id": 3636, "is_default": true, "name": "Unit&q ...
- 【BZOJ4866】[YNOI2017] 由乃的商场之旅(莫队)
点此看题面 大致题意: 给你一个字符串,每次给你一段区间,问这段区间内有多少个字符串在重新排列后可以变成一个回文串. 关于莫队 详见这篇博客:莫队算法学习笔记(一)--普通莫队. 关于回文 要使一个字 ...
- python_77_json与pickle序列化3
#此方法:dump多次,而不可以load多次,只能load一次,否则会出错 只有序列化,无反序列化 import json info={ 'name':'Xue Jingjie', 'age':22, ...
- strong和weak
ios中使用ARC后,内存管理使用了新的关键字:strong(强引用) 和 weak(弱引用),默认是strong引用 strong: 使用strong类型指针指向的对象,会一直保持指向,直到所有st ...
- 1046: [HAOI2007]上升序列
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5822 Solved: 2071[Submit][Status][Discuss] Descript ...
- 爬虫学习(八)——带cookie的网页进行爬取
# 前提:# # 通常,很多网站需要登录才能进行浏览,所以在爬取这些网站时,也需要进行登录,并拿取登录时的cookie# # 登录网页,服务器会给客户端一个牌子cookie# # 访问登录页面时,带着 ...
- indexOf和contains查找的字符串是空字符,返回值是什么呢?
一直以为indexOf方法查找的字符串如果不匹配返回值就是-1.今天发现空字符返回值是0.看源码原来如此,阴沟里翻船啊!
- Mysql之1451 - Cannot delete or update a parent row: a foreign key constraint fails...解决办法记录
今天使用delete语句删除一张表中的一条信息时,提示了这么一个错误:1451 - Cannot delete or update a parent row: a foreign key constr ...
- 搭建Nginx反向代理做内网域名转发
由于公司内网有多台服务器的 http 服务要映射到公司外网静态 IP,如果用路由的端口映射来做,就只能一台内网服务器的 80 端口映射到外网 80 端口,其他服务器的 80 端口只能映射到外网的非 8 ...