我所有程式合集
程式名稱: |
程式簡介: |
所學到的知識: |
不足之處: |
1.ASCII |
只有一行代碼的簡單程式,用於擷取按鍵的ASCII碼值。 |
簡單的控制項屬性設定。 |
|
2.Read Mind |
讀心術小遊戲,在網上玩了別人的小遊戲覺得很好玩,研究了半天演算法後自寫了一個。 |
動態產生控制項,隨機數產生原理以及tab page的使用。 |
標籤產生隨機圖樣用枚舉就可以了,當時沒學到,所以用給類的建構函式傳遞值的方法,造成效能損失。 |
3.Hot key |
看到Vista新功能用Win+數字鍵可以對應啟動快速啟動欄上的程式而寫。可以用Alt+數字鍵啟動對應程式。 |
流的讀寫控制和安全、C#中系統API函數調用及其命名空間。第一次接觸WinProc過程。 |
沒有設定標籤,介面難看,按鍵不方便且沒有表徵圖。 |
4.IFEO映像劫持 |
看了熊貓燒香病毒如何讓殺毒軟體失效後所寫。可以讓程式不能運行,也能解除IFEO映像劫持。 |
首次編寫時學會了註冊表讀寫。第二次更新程式時學會了如何讓程式在VISTA系統許可權不足的情況下自動要求管理員許可權。 |
本來打算再寫一個HOSTS劫持的。後來更新Hot Key耽擱了。 |
5.More Effective Key |
Hot Key的更新版本,增加了標籤功能,每個標籤下有5個按鈕,對應全域快速鍵ALT 1~5,解決了ALT 6~0按鍵不方便的情況 |
學會了在容器中添加刪除群組件,學會了如何讓程式在上次關閉的地方顯示。對錯誤調試和編程習慣感悟頗深。第二次接觸WinProc過程。 |
由於幾乎重寫代碼,但是仍然用ini檔案儲存體配置,導致程式邏輯複雜,設計困難。截至寫這篇文章時仍有bug存在。 |
6.Ring |
一個到點提醒程式。因為整天一坐到電腦上就忘乎所以,寫這個程式提醒自己重要的事情。 |
首次編寫Cute介面。對主表單事件有初步瞭解。學會了ArryList的用法。 二次更新發現bug,對DateTime.toShort….string()和DateTime.toString()方法加強認識。 |
ListView顯示記錄按照升序排列。使用後才發現其實用降序比較好。 提醒訊息處理完後會有小bug,不過不影響使用。 |
7.USB Lock |
一個隨身碟鎖。看了電腦愛好者雜誌上一篇文章。關於讓電腦只有插入正確的隨身碟才能解鎖電腦後自己實現的。 |
首次編寫帶有DLL的軟體。 初步瞭解了WndProc過程,並在Win32學習過程中得到印證。初步瞭解了控制代碼的含義。 |
程式在鎖住滑鼠方法上採用Timer控制項的方法與網上重寫gina.dll和用全域滑鼠鍵盤HOOK相比效率較低 |
--------
我是從大一第二學期的暑假開始學習C#的,現在是大二第一學期的寒假。
第一次覺得C#學得“差不多”是在看完《C#入門經典》的時候。可是當我開始寫HotKey的時候才知道C#原來還有很多我不知道的啊~那時是因為HotKey用到了改變了一項之後需要重新讀取設定檔。那時候還不會用委託,結果只能用appication.restart,然後再Form_load裡重新載入配置。現在想起來還真是好笑啊。
後來是在寫完ring之後。覺得自己在C#也算有小小的“建樹”了(經過第一次的“打擊”後我已經變得很謙虛了),但是後來的USB LOCK再次給我打擊。原來自己對表單間的通訊是那麼的不瞭解……
前幾天我叔叔的小孩滿百天,去吃飯。遇到了去早稻田大學讀研的謝叔叔。當我說到USB LOCK的構思時,他竟然是隨口就說“那麼不是系統很多訊息都是傳到WndProc過程的麼,只要重寫.....”,雖然當時經過Hot key和MoreEffectivekey兩個程式的開發我已經依稀知道了這件事,當我聽到這個想當然的回答時還是吃了一驚。後來他介紹了一本<<Progamming Windows>>(中文叫《Windows程式設計》,現已絕版),我從網上下載了電子版,看了幾張之後大歎“原來這些知識對於當年的MFC和WIN32工程師來說真是基礎中的基礎知識啊!”。
當初學校有教MFC,只是使和CONSOLE一起,而且用的書可以說是寫給作者自己看的,所以一直沒好好學。而且在學MFC之前有教過1學期VB6,可以說那時早就投奔了VB陣營。在暑假看完C#後發現VB在開發大項目時候的局限和維護問題,於是又屁顛屁顛的奔向了C#的懷抱。現在我才知道語言都是一樣的,但是對於系統(或系統底層)的瞭解多一點總是好的。這話說的很委婉,是《Programming Windows》的作者Charles.Petzold在書中所寫。
看完Charles.Petzold這句話我大為慚愧。可以說但是前面幾章的知識已經解釋了我在C#中無法理解的很多問題。對於API的調用。比如在自製“按鍵精靈”(因為只是寫出來在學校刷選課,所以就沒列在這裡)的時候用的獲得滑鼠位置的API函數、還有為什麼在C#中很多函數要用到IntPtr的視窗控制代碼、而後在USB LOCK中用sendMessage api函數向活動表單發送最小化訊息時簡直可以說這些在C#中的“進階”編程都是WIN32中的基礎基礎。
最後借用Charles.Petzold那句話給習慣或者對“進階語言”情有獨鐘的學習者一個小小的建議,多知道一些底層的知識總是好的~
最後先在這裡給大家拜一個早年~
特別鳴謝:梨子,小蘭,小虞妹妹,Moca學妹陪我度過了07這個大學的低穀年。