給老婆寫的關(guān)機(jī)程序
前幾天老婆想要一個(gè)自動(dòng)關(guān)機(jī)的軟件,這種小軟件網(wǎng)上下載不是有廣告就可能有病毒,或者覺得不好用。這么簡單的軟件,自己應(yīng)該很容易寫一個(gè)吧。首先用幾分鐘寫出一個(gè)bat腳本。(腳本賣萌的地方,不要見笑哦)
- @echo off
- echo 自動(dòng)關(guān)機(jī)程序,獻(xiàn)給我親愛的老婆!
- echo 請(qǐng)輸入需要關(guān)機(jī)的延遲時(shí)間。
- echo 請(qǐng)先保存、關(guān)閉重要的程序,到時(shí)候會(huì)強(qiáng)制關(guān)機(jī),不能后悔哦。
- :again
- echo 關(guān)機(jī)時(shí)間(秒)=
- set /p SHUTDELAY=
- echo 將在 %SHUTDELAY%秒后關(guān)機(jī),確認(rèn)輸入ok然后回車,取消請(qǐng)關(guān)閉本窗口。
- echo 如果要重新輸入關(guān)機(jī)時(shí)間,請(qǐng)按回車。
- set /p AGREE=
- if "%AGREE%"=="ok" shutdown -f -s -t %SHUTDELAY%
- if not "%AGREE%"=="ok" goto again
- echo 老婆的命令已經(jīng)生效了。請(qǐng)關(guān)閉本窗口。
- pause>nul
當(dāng)然這樣的腳本并不能充分顯示老公的“手藝”,于是動(dòng)手寫一個(gè)窗體程序。本來可以用C++ MFC,但是想想也太沒有挑戰(zhàn)性了,順便想體驗(yàn)一下高生產(chǎn)率的語言帶來的好處(參考此文),所以用C#寫了一個(gè)小工具。大家可以到我的公開SVN上下載代碼。代碼基于GPL協(xié)議發(fā)布。
SVN地址: http://svn.zhu.im/just-for-fun/CsharpProjs/ShutdownMyPC/
代碼中依然有賣萌的地方,切勿拿來交作業(yè)什么的。:)
以下是運(yùn)行界面:最小化后可以隱藏在系統(tǒng)托盤哦
但 是,這樣一個(gè)東西在發(fā)布給用戶(嗯,我老婆一個(gè)人)時(shí),遇到了麻煩。原來她辦公的電腦時(shí)很久很久沒有更新的Windows XP,有沒有.Net Framework不知道,但肯定沒有.net framework 4. 于是想要制作一個(gè)安裝程序,把framework集成到安裝包里。結(jié)果,我沒有找到任何可用的解決方法。如果按照微軟標(biāo)準(zhǔn)做法,使用聯(lián)機(jī)下載方式,那不聯(lián) 網(wǎng)的電腦怎么辦?如果使用本地安裝包,我本來數(shù)k字節(jié)的軟件,瞬間變成數(shù)十M,size可是錢啊。不論時(shí)網(wǎng)絡(luò)傳輸還是介質(zhì)拷貝,文件一大什么方法都不優(yōu)雅 了。這簡直就是悲劇。幸好,家里的Windows 7在我的悉心呵護(hù)下,長期保持自動(dòng)更新,終于能用來給“客戶”演示了。
另外一個(gè)感想就是,程序員真的需要堅(jiān)持不懈的克服“程序員情結(jié)”。我寫軟件為了好玩,加入倒計(jì)時(shí)聲音警告功能、加入了幾種色彩警告,不僅沒有得到“用戶”好評(píng),反而被批“弄那么麻煩干嘛”。是啊,KISS吧,你懂的。(不過我老婆會(huì)領(lǐng)會(huì)為另外一種意思,兩者都很好)
附上exe程序,電腦中已經(jīng)安裝了.Net framework 4.0,自己愿意且會(huì)安裝的人可以下載來玩玩:
下次我會(huì)用C++實(shí)現(xiàn)盡可能少依賴性的軟件了。