有需求才會有發明,用流行音樂來當鬧鈴的人越來越多,其中手機當鬧鐘當然就是首選,只是要是個不注意沒記得充電的話,明天就不用起床了,那可就很慘了。現在人如果不是特別注意電費的用量(學校宿舍~XD),幾乎成天都是開著電腦,那何不用電腦來當鬧鐘哩?此外,電腦發出的音量也絕對夠大聲(除非你沒開喇叭),個人也有這個構想,於是下了很多程式來用,只是效果都不是很好,其中有不能照時運作的,也有的是只播一次,就不再撥放了,那要貪睡蟲起來是不可能了~更糟的還有完全沒反應的...這種的就不用管他了。當然其實有一部份的原因是沒有自己要的功能,像是隨機撥放歌曲,要是每次播得都是一樣的歌,這樣不會厭倦嗎?此外還有另一個瓶緊,就是外文語系,撰寫 ANSI 程式通常是最直接最快的,但只要是碰到不屬中文其他語系的話,那也就不用播了(除了裝有 Unicode 補丁,不過換作業系統後又會遇到,很麻煩的)~
本篇使用 VBScript,因為它是 Windows 中的基本配備,功能也相較另一個附帶命令批次字元強大,沒有文字敘述上的缺陷,而且能支援 Unicode,相較其他進階的程式語言,不需加裝任何東西的直譯式語言也比較容易修改和攜帶,就如同 Linux Shell 一般。在此寫下方法做紀錄~
當然要動手做也要有材料,那麼就先來說一下需要的材料。
1. | KMPlayer (用來播放音樂的程式,可用其他支援 Unicode 的播放軟體, |
由於是用 VBScript 撰寫,自然不可能會有播放音樂的能力,如果有算我孤陋寡聞) | |
2. | 隨便一個你認為好用的文字編輯程式,notepad 也行。 |
3. | 系統排程 (這是用來定時啟動程式的關鍵) |
4. | Windows XP 以上 (這是個人測試可以執行的作業系統, |
在這個版本之前可能要安裝,VBScript 的直譯器) |
撰寫上沒什麼要點,只是為了配合 Windows 的系統排程,需要注意一些事情,由於 Windows 在程式執行後,再到程式重複直行的時間時,如果發現程式還在執行,便不會再次啟動程式,如果這途中有人暫停了播放器,那就不會再執行,這樣也就失去了當鬧鈴的必要條件,於是除了播放程式自身必須要有自動關閉,更要運用到 VBScript 的強制結束程式功能。如果你用的不是 KMPlayer 那請先用開始執行,輸入程式路徑,在後面加上 /? 確定有沒有在播放完畢時關閉程式的功能。
Private FSO
Private WshShell
Private ProgPath
Private WshExec
Private FileStrem
Private MusicList
Private MusicListNum
Private i
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
Set FileStrem = FSO.OpenTextFile(FSO.BuildPath(FSO.GetFolder("."), "MusicList.txt"), 1, False, -1)
'此處為要隨機播放的音樂檔案路徑列表檔案名稱
MusicList = Split(FileStrem.ReadAll, vbCrLf)
MusicListNum = UBound(MusicList) + 1
Randomize
i = Int(Rnd() * MusicListNum)
Set WshExec = WshShell.Exec("""請填入 KMPlayer 主程式的所在位置,另外記得要在有 \ 的部分多加一條 \。"" /close """ & MusicList(i) & """")
For i = 1 To 285
'檢查程式狀況,在 285 秒後未自行結束,將會強行結束。
If WshExec.Status = 1 Then Exit For
WScript.Sleep 1000
Next
If WshExec.Status = 0 Then WshExec.Terminate
Set WshShell = Nothing
Set WshExec = Nothing
這部分沒什麼難度,只要將音樂的完整路徑填到裡面就行,什麼語言都行,記得一首歌要換一行就好,存檔時,將編碼換成 Unicode,這是最重要的部分,檔案名稱為 MusicList.txt,與 .vbs 放在一起。你也可以更換上面的檔名,不過存成的檔案要跟著換才不會錯,但絕對不能更改成其他編碼,不然就......
系統排程設定這個部分就最麻煩的了。個人無法代勞,請詳細看清楚再做操作。由於在系統排程上,XP 和 Vista、7 有很大的不同,所以會分開來說明。
Windows XP
開始→所有程式→附屬應用程式→系統工具→排定的工作
開始→所有程式→附屬應用程式→系統工具→工作排程器
1. | 選擇左側欄中的工作排程器程式庫,接著選右側欄中的建立工作。 | |
2. | 名稱隨便取,這頁不用做什麼設定,所以切到觸發程序。 | |
3. | 按新增,這裡可以設定時間,請依照自己的需求設定。主要是進階設定,請依照下圖做設定,然後確定,切到動作頁。 | |
4. | 按新增,把要執行的指令碼填進去就完成了,接著就可以收工啦~ | |
在此要說明幾項注意事項,其一是中斷時間,程式的預設是在 285 秒(4分45秒)未結束會強行將播放器結束,所以當音樂長度超過這個數字都會被結束掉,其二是重覆時間,可以更改時間,但原則上必須比中斷時間大 15 秒以上(測試時還能夠趕上下一次播放),基本上 30 秒以上為佳,否則程式會來不及在下一次重複前結束,其三是程式沒有完整的停止功能,所以你如果確定已經醒了那只能把喇叭關小聲,直到排程結束~XD
另外關於沒有自動關閉功能的播放器,其實還是可用的,這一方面不會有什麼影響,不過要注意一下重複時間和中斷時間有沒有大過一定值以上,不然很可能會變成雙倍的重覆時間才播一次。
唔~花了一個下午的時間完成這一篇,似乎是電腦前待太久,變得好不舒服啊~找時間再繼續修改吧~現在好難過啊~另外,有要轉貼的也歡迎,不過請標上 Blog 網址就是了~XD
沒有留言:
張貼留言