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

第一步,新建一个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. Android 关于Acitivity 的setFlag以及launchmode的总结

    Intent几种常见的flags: .FLAG_ACTIVITY_NEW_TASK:当Intent对象包含这个标记时,系统会寻找或创建一个新的task来放置目标Activity,寻找时依据目标Acti ...

  2. LAMP Stack 5.7.16 (Ubuntu 16.04.1)

    平台: Ubuntu 类型: 虚拟机镜像 软件包: apache2.4 mysql5.7 php7 phpmyadmin4.5 apache application server basic soft ...

  3. JavaScript基础:(加号,数值转换,布尔转换)

    JavaScript中加号运算符"+" 运算过程理解 1) 如果其中一个操作数是对象,则对象会遵循对象到原始值的转换规则转换为原始值.日期对象通过toString()方法执行转换, ...

  4. thinkphp 3.2.3版本学习笔记

    2.开启调试模式,有什么作用?(默认关闭,在ThinkPHP.php 33行左右) (1)非法调用的时候,有详细的报错信息,便于调试 (2)APP_DEBUG为true并且缓存文件存在,走缓存文件,否 ...

  5. pta 编程题6 树的同构

    其它pta数据结构编程题请参见:pta 题目请参见:树的同构 因题目中左右子树是按照下标给出,因此用数组存放树是更好的方法. 判断两棵树是否同构:用递归的方法.如果当前两个结点都为空,则返回TRUE: ...

  6. 【BZOJ4810】[YNOI2017] 由乃的玉米田(莫队+bitset)

    点此看题面 大致题意: 给你一段序列,每次询问一段区间内是否存在两个数的差或和或积为\(x\). 莫队算法 看到区间询问+可以离线,首先想到了莫队啊. 但是,在较短的时间内更新信息依然比较难以实现. ...

  7. Gym - 100676H Capital City(边强连通分量 + 树的直径)

    H. Capital City[ Color: Black ]Bahosain has become the president of Byteland, he is doing his best t ...

  8. 深入理解计算机系统_3e 第十章家庭作业 CS:APP3e chapter 10 homework

    10.6 1.若成功打开"foo.txt": -->1.1若成功打开"baz.txt": 输出"4\n" -->1.2若未能成功 ...

  9. Redis学习记录(一)

    在学习Redis之前,要知道什么是NoSQL? 1.NoSQL 1.1. 什么是NoSQL NoSQL(NoSQL = Not Only SQL),表示“不仅仅是SQL”,泛指非关系型数据库. 1.2 ...

  10. java程序换图标

    ImageIcon img = new ImageIcon("D:\\mahou-in-action\\ShiJuanFenXi\\src\\zoom-in.png"); inst ...