
定时关机,无论何时何地都是一个非常实用的小功能。对于初学者,如果能通过自己的双手设计出这个小程序,不仅用着舒服,而且可以根据自己的需要随时修改,然后一股成就感油然而生。
由于完整代码太长,本经验中只写核心代码,如果大家需要完整代码,请在下方留下自己的邮箱,笔者会及时发过去的。
本经验分为三大模块介绍:算法分析及关键代码、程序界面展示、程序进阶使用
注:本经验仅适于初学者,老鸟请绕行
本设计需要借助的是windows的相关指令(比如1000s关机):
shutdown -s -t1000 //1000秒后自动关机
shutdown -a //取消定时关机
需要明白C(C++)中,引用windows的指令需要如下代码段(比如用代码实现取消关机):
system("shutdown -a");
shutdown -s -t1000 //1000秒后自动关机
shutdown -a //取消定时关机
观察这两段命令可知:它们是以字符串形式放到C(C++)代码段system("");中。
“取消定时关机”:全是字符串,可以全部放入代码段system("");中,;
“1000秒后自动关机”:它是一个“变数”,代码最终实现时,需要根据我们输入的不同时间而发生不同的变化,因此需要将该段指令分为两部分字符串:固定部分“shutdown -s -t” + 变动部分“second”。到底怎样将这两部分字符串放入到代码段system("");中,我们下一步骤再详细解释。
固定部分“shutdown -s -t” +变动部分“second”:
我们需要处理的是:变动部分“second”,
假设second得到了一个确定的数,此时,只要我们将这两部分的内容进行字符串合并,合并后,就可以放入到system("");中了。
此时,需要用到的代码:
char shut[]="shutdown -s -t"; //左部分红色固定的字符串
system(strcat(shut,second)); //将右部分字符串连接到左部分,并放入到system("");中
注:strcat(a,b);该函数用于实现将字符串b连接到字符串a的后面。该函数在c++的
而second原本是个int型的数据,要想参与上一步骤的字符串合并,需要先将int型数据转换成字符串的,此时,我们需要用到这个函数:
itoa(second0,second,10);
//second0代表我们输入的任意int型的秒数,将10进制的second0转换为字符串second
注:itoa(a,b,t)请大家前往百度查找具体的使用情况,该函数在c++;的#include
上一步骤中second0是int型的秒数,而我们一般手动输入的都是小时,或者分钟,因此,second0是经过时间换算后的结果。比如:我们需要80分钟后关机,此时代码运算:80*60=4800秒,second0=4800秒,经过转换将second0转换为字符串型的second。
注:建议手动输入设置为分钟数,这样关机时间更灵活些。
通过上面的设计思路和简要代码,大家就可以马上着手敲写完整的代码了
下面我展示一下程序运行时的效果图
输入关机时间示意图:
系统开始执行自动关机示意图:
取消自动关机示意图:
生成的exe程序只有几百k,我们当然可以直接双击启动它,但如果我们将这个程序放到一个磁盘中,然后建立一个快捷方式,并为这个快捷方式设置一个快捷键,当需要使用时,只需要按下快捷键,这样去使用它,将更加方便。
史上最纯净的软件,或者说是小程序就此完成。
如下图:当按下ctrl+alt+f后,则该程序启动
部分安全软件可能会阻止该程序的执行,当出现如下问题时,请直接选择允许:
win7、win8用户建议进行如下设置,然后重启计算机:
如果大家有什么疑惑 或者更好的意见和建议,请在下方留言处留言,笔者会尽自己所能回答的。
大家如果觉得此经验对大家有所帮助,请在文章上方点下大拇指或者在右方为笔者投一票,笔者不胜感激!
------ -----作者:idea_wj 转载请注明作者笔名,谢谢 2013年9月19日
