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