對我學習C#至今所寫的軟體做一個總結

來源:互聯網
上載者:User
 

我所有程式合集

程式名稱:

程式簡介:

所學到的知識:

不足之處:

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這個大學的低穀年。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.