前几天老婆想要一个自动关机的软件,这种小软件网上下载不是有广告就可能有病毒,或者觉得不好用。这么简单的软件,自己应该很容易写一个吧。首先用几分钟写出一个bat脚本。(脚本卖萌的地方,不要见笑哦)
- @echo off
- echo 自动关机程序,献给我亲爱的老婆!
- echo 请输入需要关机的延迟时间。
- echo 请先保存、关闭重要的程序,到时候会强制关机,不能后悔哦。
- :again
- echo 关机时间(秒)=
- set /p SHUTDELAY=
- echo 将在 %SHUTDELAY%秒后关机,确认输入ok然后回车,取消请关闭本窗口。
- echo 如果要重新输入关机时间,请按回车。
- set /p AGREE=
- if "%AGREE%"=="ok" shutdown -f -s -t %SHUTDELAY%
- if not "%AGREE%"=="ok" goto again
- echo 老婆的命令已经生效了。请关闭本窗口。
- pause>nul
当然这样的脚本并不能充分显示老公的“手艺”,于是动手写一个窗体程序。本来可以用C++ MFC,但是想想也太没有挑战性了,顺便想体验一下高生产率的语言带来的好处(参考此文),所以用C#写了一个小工具。大家可以到我的公开SVN上下载代码。代码基于GPL协议发布。
SVN地址: http://svn.zhu.im/just-for-fun/CsharpProjs/ShutdownMyPC/
代码中依然有卖萌的地方,切勿拿来交作业什么的。:)
以下是运行界面:最小化后可以隐藏在系统托盘哦
但 是,这样一个东西在发布给用户(嗯,我老婆一个人)时,遇到了麻烦。原来她办公的电脑时很久很久没有更新的Windows XP,有没有.Net Framework不知道,但肯定没有.net framework 4. 于是想要制作一个安装程序,把framework集成到安装包里。结果,我没有找到任何可用的解决方法。如果按照微软标准做法,使用联机下载方式,那不联 网的电脑怎么办?如果使用本地安装包,我本来数k字节的软件,瞬间变成数十M,size可是钱啊。不论时网络传输还是介质拷贝,文件一大什么方法都不优雅 了。这简直就是悲剧。幸好,家里的Windows 7在我的悉心呵护下,长期保持自动更新,终于能用来给“客户”演示了。
另外一个感想就是,程序员真的需要坚持不懈的克服“程序员情结”。我写软件为了好玩,加入倒计时声音警告功能、加入了几种色彩警告,不仅没有得到“用户”好评,反而被批“弄那么麻烦干嘛”。是啊,KISS吧,你懂的。(不过我老婆会领会为另外一种意思,两者都很好)
附上exe程序,电脑中已经安装了.Net framework 4.0,自己愿意且会安装的人可以下载来玩玩:
下次我会用C++实现尽可能少依赖性的软件了。