有幾種方法可以實現它。
壹個更簡單的:
使用SetWindowLong對HWND進行子類化,即設置窗口的消息處理函數,然後判斷消息是否被按下,處理好之後再調用舊的消息處理函數。
但是每個進程都有自己的私有4G空間,妳要攔截的是遠程進程窗口的消息。所以不能簡單的直接使用SetWindowLong,因為妳傳遞的參數對遠程進程是沒有意義的。
因此,在第壹步中,您需要將實現寫入DLL,然後將DLL註入遠程進程。(註意,DLL的DLLMain函數實現了SetWindowLong等的實現。).
這種方法比全局鉤子方法更有效。而且很好寫。