關於HOOK,如何通過鉤子截獲指定視窗的所有訊息

2021-06-21 07:39:20 字數 571 閱讀 7398

setwindowshookex   第三個引數為hinstance,通過findwindow找到指定視窗控制代碼後如何   

得到該程序的hinstance呢?

這個引數應該是你呼叫setwindowshookex的dll的模組例項控制代碼,它可以經由dllmain入口的第乙個引數得到。   

hhook   setwindowshookex( int   idhook,   

hookproc   lpfn,   

hinstance   hmod,   

dword   dwthreadid   

);   

至於setwindowshookex的第四個引數dwthreadid,才是你需要藉由視窗控制代碼得到的視窗執行緒id,你可以通過下面的**獲得:   

dword   dwthreadid   =   getwindowthreadprocessid(hwnd,   null);

選擇相應的訊息鉤子,比如wh_callwndproc(用來監視視窗過程)、wh_getmessage(用來監視訊息佇列的訊息)、wh_keyboard(鍵盤訊息)、wh_mouse(滑鼠訊息)等等。

C 如何通過probing指定dll尋找資料夾詳解

前言 我們在很大的專案開發,會發現專案引用的 dll 會很多,我想要按照不同的功能,將不同的 dll 放在不同的資料夾 簡單的方法是通過修改 app.config 檔案指定資料夾,如將檔案移動到 abc 12 的資料夾裡面,可以在 app.config 新增 l程式設計客棧t probing pri...

Mac下如何通過brew安裝指定版本的nodejs

一 安裝brew 終端上執行 usr bin ruby e curl fssl 二 安裝nodejs 執行brew install node 即可,但是這樣安裝的node是最新node,本人安裝後是node6.x,node6.x對一些就模組已經不支援了,比如graceful fs,導致安裝一些包的時...

如何通過字串指定的視窗名稱,獲取該視窗內的控制項

以下 源於 以下 以通過測試,沒有一點問題了。string ls name classdefinition cd window w ls name w main cd findclassdefinition ls name if not isvalid cd then messagebox 找不到該...