介面開發(二)— NativeWindow

來源:互聯網
上載者:User

     NativeWindow是.net Framework提供的一個底層的類。微軟官方的解釋為:NativeWindow Provides a low-level encapsulation of a window handle and a window procedure.說道這些也相當於沒有說,因為NativeWindow到底是幹什麼的也沒有說清楚,意思就是一個低層級的對表單控制代碼和表單過程的一個封裝。後來查詢了很多的資料才明白了其中的意義。

     資料來源:

     http://www.diybl.com/course/4_webprogram/asp.net/netjs/2007921/72804.html

     這個講解的是《利用NativeWindow監視WndProc訊息》,這篇內容比較長,而且頁數比較多,經過自己努力和耐心,終於完成了其中的例子,代碼為:/Files/zhjp11/皮膚/NativeWindowApplication.rar

     http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx

     這篇來自CodeProject,老外寫的代碼就是比較有水平。將Windows 的OpenFileDialog子類化,顯示成了自訂的OpenFileDialog,而且添加了很多的事件。相當的佩服。

     經過這兩篇的細心閱讀,終於瞭解了NativeWindow的作用,NativeWindow就是提供了底層的封裝,提供了AssignHandle和RealeseHandle這兩個方法,主要就是對註冊了表單控制代碼的表單進行Hook,將表單的事件經過自己處理後交給Windows處理。使用Refector.net查看了NativeWindow中AssignHandle這個方法,也驗證了我這個說法。在AssignHandle中有這樣一段代碼:

userDefWindowProc = UnsafeNativeMethods.GetProcAddress(new HandleRef(null,UnsafeNativeMethods.GetModuleHandle("user32.dll")), lpProcName); 

 

     對Win32開發的也許都知道這段代碼的意義,他也是Hook的一種。不過是更加進階的Hook方式。這裡就不在細說,我們現在只要知道他可以對我們進行註冊的表單進行Hook,可以將自己的代碼載入到我們想要的位置就可以了。

     然後我就使用NativeWindow擷取所有的表單的所有事件,然後輸出Hook到的時間,結果圖如下:

                                              

     下載代碼如下:/Files/zhjp11/皮膚/SkinEngines20100319.rar

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.