有人能指導我找出一個Windows API函數來使用,以攔截在特定窗口上的某個按鈕上點擊鼠標。我已經使用spy ++瞭解到,當我將查找工具移動到某個按鈕或窗口中的任何東西時,我可以讀取有關處理程序和其他信息的信息。那麼有沒有辦法在執行某個動作之前攔截鼠標點擊並注入我們的代碼。非常感謝您分享任何關於此的想法。攔截窗口鼠標點擊
攔截窗口鼠標點擊
回答
我能想到的幾個不同的方式來處理這個:
您可以使用
SetWindowsHookEx()
安裝在目標窗口中的一個WH_CALLWNDPROC
消息鉤子線程,然後鉤子回調可以在目標窗口的父級上處理窗口消息,如WM_LBUTTON(DOWN|UP)
,或者在目標窗口的父級上處理BN_CLICKED
。需要注意的是回調需要在DLL中實現,因此可以將鉤子注入到目標進程中。您可以使用GetWindowThreadProcessId()
獲取目標窗口的線程ID。其中的一種變化是讓
SetWindowsHookEx()
安裝WH_GETMESSAGE
鉤子,然後您可以使用PostMessage()
將自定義窗口消息發送到目標窗口。鉤子回調然後可以使用SetWindowLongPtr()
或SetWindowSubclass()
來直接對目標窗口和/或其父級進行子類化以用於進一步的消息處理。您可以使用
SetWinEventHook()
來監視EVENT_OBJECT_INVOKED
事件,例如按鈕點擊。如果使用WINEVENT_OUTOFCONTEXT
標誌,則不需要DLL,但需要注意的是安裝線程需要一個活動的消息循環,以便跨越流程邊界處理事件。
您將需要調用SetWindowsHookEx API來設置窗口掛鉤。下面是與源代碼的文章,演示其用法:Hooks and DLLs
@RemyLebeau我已經發布了一種方法。如果它與我的不同,請單獨發佈您自己的答案。 –
- 1. 抓住/攔截所有鼠標點擊
- 2. Windows掛鉤攔截鼠標點擊?
- 3. 如何攔截透明窗口的鼠標事件?
- 4. PostMessage鼠標點擊背景窗口
- 5. 當鼠標懸停在控件上時攔截鼠標單擊
- 6. 攔截從其他程序點擊鼠標
- 7. 攔截每一個鼠標點擊WPF應用程序
- 8. 攔截打開窗口 - C#
- 9. FXRuby攔截窗口關閉
- 10. 攔截點擊標籤小部件
- 11. 攔截Dock圖標點擊OSX
- 12. 鼠標點擊特定窗口/背景窗口(nodejs)
- 13. C++ winapi通過鼠標點擊子窗口到父窗口
- 14. 手機firefox點擊攔截
- 15. 攔截點擊發送Mail.app
- 16. 攔截html按鈕點擊
- 17. Android WebView - 攔截點擊
- 18. 自動鼠標點擊無需關注窗口焦點
- 19. C++鼠標點擊窗口中的某個點
- 20. GTK:在窗口中點擊鼠標的共同點
- 21. 攔截鼠標滾輪傾斜事件?
- 22. 在windows中攔截鼠標事件
- 23. Starling禁用鼠標攔截器
- 24. 攔截鼠標/鍵盤事件
- 25. 攔截出口
- 26. 攔截單擊或雙擊鼠標 - 僅執行雙擊代碼雙擊
- 27. 使用Windows掛鉤攔截鼠標點擊我的應用程序C++
- 28. 攔截吐司通知窗口電話
- 29. window.open與彈出窗口攔截器
- 30. 避開彈出式窗口攔截器
這是最好的答案,但它需要代碼示例 – FindOutIslamNow