對於Windows系統,它是建立在事件驅動機制上的,說白了就是整個系統都是通過消息傳遞實現的。hook(鈎子)是一種特殊的消息處理機制,它可以監視系統或者進程中的各種事件消息,截獲發往目標窗口的消息並進行處理。所以說,我們可以在系統中自定義鈎子,用來監視系統中特定事件的發生,完成特定功能,如屏幕取詞,監視日志,截獲鍵盤、鼠標輸入等等。
鈎子的種類很多,每種鈎子可以截獲相應的消息,如鍵盤鈎子可以截獲鍵盤消息,外殼鈎子可以截取、啟動和關閉應用程序的消息等。鈎子可以分為線程鈎子和系統鈎子,線程鈎子可以監視指定線程的事件消息,系統鈎子監視系統中的所有線程的事件消息。因為系統鈎子會影響系統中所有的應用程序,所以鈎子函數必須放在獨立的動態鏈接庫(DLL) 中。
所以說,hook(鈎子)就是一個Windows消息的攔截機制,可以攔截單個進程的消息(線程鈎子),也可以攔截所有進程的消息(系統鈎子),也可以對攔截的消息進行自定義的處理。Windows消息帶了一些程序有用的信息,比如Mouse類信息,就帶有鼠標所在窗體句柄、鼠標位置等信息,攔截了這些消息,就可以做出例如金山詞霸一類的屏幕取詞功能。
https://blog.csdn.net/hjxwudiha931721/article/details/76064165