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) 用户可以按以下步骤进行操 ...
随机推荐
- Android 超简单的拖动按钮 悬浮按钮 吸附按钮
第一种 第二种 第一种实现方法 xml布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/re ...
- JAVA继承与使用
说来惭愧,java学完已经两年了,开发也已经做了快一年了,现在才基本了解继承怎么用,平时都是在一个类中乱写一气.现在感觉原来学的知识真正运用起来还是具有一定的差距.希望能够先夯实基础,共勉.写一下自己 ...
- 红象云腾CRH 一键部署大数据平台
平台: arm 类型: ARM 模板 软件包: azkaban hadoop 2.6 hbase hive kafka spark zeppelin azkaban basic software bi ...
- 新客户上云 - 来自 Azure 技术支持部门的忠告
本课程内容是来自 Azure 中国技术支持团队对新客户上云的忠告. 对于上云的新用户,Azure 技术支持部门有如下忠告: 1. 时刻关注并理解以下网站的变动来优化资源配置,更新设计方案. Azure ...
- v-if与v-show的区别
一.区别 v-if 动态的向DOM树内添加或者删除DOM元素:“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建:在初始渲染条件为假时,什么也不做. v-sho ...
- 【mydigitallife.info】如何禁用Aero窗口自动最大化
Go to Control Panel. Click on Ease of Access link or Ease of Access Center icon. Select Change how y ...
- js数据结构处理--------树结构数据遍历
1.深度遍历 深度遍历利用栈来实现 class Stack { constructor () { this.top = 0, // 栈的长度 this.list = [] } push(item) { ...
- 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)
微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞 ...
- http 高级配置 虚拟主机,https 编译安装
目录 http 高级配置 虚拟主机,https 编译安装 http 重定向 https HSTS HSTS preload list http 自带的工具程序 httpd的压力测试工具 实现状态页 反 ...
- 二十一、MySQL NULL 值处理
MySQL NULL 值处理 我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. ...