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

第一步,新建一个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的更多相关文章

  1. MFC定时关机程序的实现3-最小化到托盘栏

    这个定时关机运行过后默认最小化到托盘栏最好了,不用每次都去点了. 现在来看看如何将程序显示在托盘栏. 首先在头文件里声明一个变量和一个消息响应函数 //最小化到托盘栏 //第一步,生成一个成员变量,或 ...

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

    虽然上一篇实现了的定时关机,但是还不够完善,比如开机自动启动,然后按照配置的时间定时关机,并最小化到任务栏. 先来说开机启动怎么实现,开机启动实现的方法有好几种,比如直接在开始菜单启动项里添加一个程序 ...

  3. 我的定时关机程序(MFC实现) .

    原理: 利用定时器去检查,如输入的是多少分钟后关机,就根据输入的分钟数产生一个COUNT计数器,计数器一直递减,直到1,然后执行关机.如输入的是几时几分关机,那么定时器会每次都检查系统的时间和你输入的 ...

  4. window 定时关机小程序bat

    复制以下文本,新建txt文件并修改为bat后缀 如图: @echo off title 定时关机 echo 定时关机程序 echo ---------------------------------- ...

  5. C# 简单的定时关机

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  6. MFC入门(二)-- 提取输入框的字符串(定时关机的小程序)

    上篇文章已经让我们有了对于MFC最简单直观的认识,但貌似并无太大的交互性可言,而且其实也没有涉及到数据的交互,所以本文通过做一个时间可以调节的定时关机的Demo来演示. MFC入门(一)地址:http ...

  7. 【转载】Win7利用任务计划程序实现定时关机

    在Win7.Win8或者Win10系统中,如果要实现电脑的自动定时关机,不需要借用任何的外部程序,直接系统自带的任务计划程序即可实现电脑的定时自动关机,支持设定电脑关机时间以及执行频率次数,如固定每天 ...

  8. JAVA定时关机小程序

    大一刚学java时候做的小程序.由于当时迅雷还没有下载完成关机,晚上要下很多学习资料.只有自己算时间然后通过shutdown命令设置时间关机. 当时通过shutwodn命令,想到能否通过java做一个 ...

  9. Windows: 在系统启动时运行程序、定时计划任务、定时关机

    lesca今天介绍一些让系统在启动时,而非登录时,加载用户自定义的应用程序或脚本的方法,推荐度从前到后依次递减. 1. Windows任务计划(task scheduler) 用户可以按以下步骤进行操 ...

随机推荐

  1. Angular ui-route介绍

    参考博客: https://www.cnblogs.com/haogj/p/4885928.html 原文地址:http://www.ng-newsletter.com/posts/angular-u ...

  2. Linux让Apache支持中文URL图片/文件名

    需要用到iconv_hook和mod_encoding Apache(32位): 安装环境:CentOS 5.6 + Apache 2.2.15 (Apache2.4同样适用) 安装结果:安装后支持“ ...

  3. LeetCode Valid Palindrome 有效回文(字符串)

    class Solution { public: bool isPalindrome(string s) { if(s=="") return true; ) return tru ...

  4. linux 命令——39 grep (转)

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  5. 2018.6.18 MyEclipse导入jquery-1.8.0.min.js等文件报错的解决方案

    MyEclipse导入jQuery-1.8.0.min.js等文件的时候有时候会报了一堆missing semicolon的错误.怎么解决这个报错呢?方法如下: 1.选中报错的jquery文件例如&q ...

  6. MFC-[转]基于MFC的ActiveX控件开发

    作者:lidan | 出处:博客园 | 2012/3/13 16:10:34 | 阅读22次 ActiveX 控件是基于组件对象模型 (COM) 的可重用软件组件,广泛应用于桌面及Web应用中.在VC ...

  7. JDBC开发,数据库的连接

    JDBC开发步骤 1.建完工程后,右击工程,new,新建一个文件夹Folder,装jar包,        2.将下载好的驱动包打开,找到jar文件,CTRL+C,选中装jar包的文件夹,CTRL+V ...

  8. eclipse关闭无用启动项,降低内存占用

    1,我使用的eclipse版本 2.打开windows-->preference 3,勾选掉无用的启动项,我的已经去掉过了, 4,重启eclipse,如果操作后导致一些必须的功能不能用了,可以点 ...

  9. Hotkeys.js 2.0.2 发布,JS 网页快捷键设置,捕获键盘输入和输入的组合键快捷键,它没有依赖

    这是一个强健的 Javascript 库用于捕获键盘输入和输入的组合键,它没有依赖,压缩只有只有(~3kb),gzip:1.9k. 更新内容: 添加测试用例: 添加更多特殊键支持: 修复bug. __ ...

  10. 更改zabbix-server的端口

    1.前言zabbix-server的默认端口号是10051.如果存在端口号冲突,需要更改端口号. 以下为更改端口号的步骤. 2.更改配置文件 通常用安装包,也就是yum方式部署的话,其默认的配置文件是 ...