1. 程式人生 > >分享我的小軟體以及心得

分享我的小軟體以及心得

本人並非專業的程式設計師,但對程式設計有著濃厚的興趣,而這種興趣始於大一時學習C++課程之後。幾年來我經常利用業餘時間寫點兒小程式,或者看一些理論書籍,對程式設計和軟體開發也有了一定的認識。

      去年9月份,我還用著一臺很舊的長城膝上型電腦,經常宕機的爛機器而且官方提供的驅動程式僅支援32位系統,後來由於學習AE換用了64位win7系統,這導致調節音量或者螢幕亮度時不能在螢幕上顯示提示資訊了。雖然這只是無關緊要的問題,但想到自己會一點兒程式設計,心想何不為自己定製一款用於提示音量資訊的小工具軟體呢?

      很快我就開始著手準備了,而且最初的想法也因為靈感不斷湧現而變得充實起來,並逐步實現。到後來,軟體不僅能提示音量資訊,而且能夠自定義音量調節快捷鍵,隨後又加入了電量監控,定時任務,音量環境模式以及Capslock、Numlock狀態提示功能(因為當時的機器大寫鎖定提示燈在前緣,很不方便,搞不懂為什麼會有這麼蛋疼的設計,現在用的聯想Z580也是這樣)。眼看的這個程式起來越有一個軟體的樣了,也開始有使用者反饋意見和建議,這使我很欣慰,雖然這種軟體是很小眾的,但畢竟有人會用。在此之前有國外牛人做的Volume2

已經很成熟了(事實上我的軟體最初也借鑑了這款軟體,還有另一款不太出名的“都客”音量調節軟體),所以我決定進一步改進它,當然並不期望能超越Volume2,只不過竭盡所能使軟體更完善。

     下面的兩幅圖是比較早版本的關於頁面和設定介面

 

     在之後的一個版本中我嘗試著改進自定義提示視窗的方法,但看起來並不太好。

  而下面的圖是最新的版本設定視窗其中的一個子頁面以及軟體的“關於”頁面。                         

 

 

      當然中間還有幾個版本,可以看到,整體的變化還是很大的。雖然軟體還不完善,但縱觀始末,一切都在向好的方向演變。

      現在我將公開這個軟體整個專案檔案,它最後一次編譯是在我著手寫這篇博文的幾小時之前,算是最新的版本了吧。其中肯定也還有不少問題,希望能有高人會有興趣並對它進行改進,同時也算是分享一下自己的經歷以及從中學到的經驗吧。

專案檔案下載地址 

     軟體使用C#語言編寫的,開發平臺是Visual Studio2012,.netframework版本4.5,不過在釋出時將改成了4.0以免部分人因版本過低而無法使用。另外我使用的DotNetBar控制元件,相關軟體部落格園也有高人及時破解。下面是這位高人的主頁

在本文開頭提到過,我最初學習的是C++,也曾經試著做過MFC程式,但感覺那個太麻煩,本人開始製作這個軟體的時候剛接觸C#一個多月,但發現它異常好用,一番摸索過後很快就找到感覺了。檔案中的註釋可能不全面,而且因為並非專業人士,整體也不太規範。

最後分享幾點兒小經驗: 

1、對於完成這種全域性快捷鍵功能,一般可以採取鉤子或者註冊全域性熱鍵。後一方法在程式碼方面要簡潔得多,但考慮到本軟體要定義很多快捷鍵,並且還要響應多媒體按鍵以及滑鼠鍵,我選擇了全域性鉤子。期間學到的經驗就是如果能找到別人現成的程式碼,就別自己從頭來過,這樣會省下不少時間的精力。專案中使用的鍵盤和滑鼠鉤子就是一外國人寫的,當然借用別人的也不能照搬,需要針對自己的目的進行修改,更正其中的錯誤並使程式碼更高效。

2、Vista或更高的系統中調節音量可以使用CoreAudioApi。CoreAudioApi也就是核心音訊API,它提供的函式可以很方面地獲取音量資訊和調節音量。這個動態庫檔案可以上網上下載,其中的一函式用法之類的都可以在網上找到比較詳細的示例。比如我在codeproject找到了一個不錯的範例。

3、關於WinFrom專案裡面的settings檔案的用法。

Settings檔案是一種比較簡單的儲存使用者設定的檔案,它可以儲存很多型別的變數,除了常規的int,string,bool等,也可以先Point,keys等型別,而我在這個專案裡就是就keys來儲存設定的快捷鍵的,而Point用來儲存提示視窗的位置。如下圖所示

 

另外,網上關於Settings檔案的用法大多在說如何用Save()函式將設定儲存到本地,而對於其它的一些函式很少說明。我自己摸索出一條很有用的技巧,就是使用它的Reset()函式使設定恢復預設狀態。這個函式在前幾天才發現,而在此之前我還很笨的在專案中儲存兩個Settings檔案,一個用於儲存使用者設定一個用於預設設定,而恢復預設的時候將預設Settings檔案的值一個個賦給控制元件……現在想想,實在是太蠢了。

4、前面幾條中提到的我在網上找到不少例子,這一點也是很重要的經驗。CSDN,CodeProject以及部落格園等專業網站都能學到不少東西。

5、樂於折騰並且善於折騰,不斷嘗試新的想法,有靈感的時候隨時記錄下來。當然在折騰之前得記得備份,這是善於折騰的要點,也是我從慘痛的教訓中學到的。

 這是我的第一篇部落格,如果對我的軟體有興趣可以和我討論。也歡迎高手賜教!