2011-12-26 94 views
9

我不知道窗口鉤子是如何在「系統級」工作的。 MSDN只觸及了什麼事情很簡單:窗鉤 - 它們是如何工作的?

鉤子是系統消息處理機制的一個點,其中一個 應用程序可以安裝一個子程序來監視郵件流量 的系統和過程中的某些類型的消息然後才能到達目標窗口過程 。

我最好的猜測是類似下面的東西:每個消息被添加到消息隊列的窗口

enter image description here

之前,會先發送郵件到全局/局部鉤子,這可能會做些什麼,取決於他們的鉤子程序。在所有全局鉤子和本地鉤子之後,消息最終被添加到窗口消息隊列中。

然而,MSDN說,對於一些類型的鉤子的,它將監視eventsnotifications

一個例子是WH_MOUSE_LL鉤:

安裝,監視低一個鉤子程序級別鼠標 輸入事件。有關更多信息,請參閱LowLevelMouseProc鉤子 過程。

當他們說events,我們在說窗口消息,還是他們的意思是別的?

我都錯了嗎?

+8

獎勵風格點爲手繪圖的圖像。 – rkb 2011-12-26 00:13:48

+1

這裏是一個小解釋http://b.1asphost.com/mmbaig/Tutorials/Windows_Hooks.html – 2011-12-26 00:47:06

+2

許多掛鉤是基於消息的。但不是你所討論的鉤子,它實際上是由一個「事件」觸發的。它僅在* Windows創建消息並將其放入具有焦點的窗口的消息隊列中之前運行。與WH_MOUSE相比較,WH_MOUSE是一個全局鉤子,當應用程序調用Get/PeekMessage並且即將從消息隊列中檢索鼠標消息時運行。因此實際上由消息觸發。 – 2011-12-26 01:00:36

回答

1

是的,這是一個windows消息機制,你可以在它到達目標窗口過程(消息循環)之前處理這些數據(消息)。

如果你想掛鉤其他進程窗口,你可以簡單地在DLL中做到這一點,並使用DLL注入注入你的庫到其他進程。

相關問題