Может ли кто-нибудь помочь мне найти функцию API окон, которая будет использоваться для перехвата щелчка мышью на определенной кнопке в определенном окне. Я использовал spy ++ и узнал, что когда я перемещаю инструмент поиска на кнопку или любую вещь в окне, я могу читать информацию об обработчике и прочем. Таким образом, есть способ перехватить щелчки мыши и ввести наш код перед выполнением каких-либо действий. Большое спасибо за то, что поделились идеей об этом.Перехват оконной мыши.
ответ
Я могу придумать несколько различных способов приблизиться к этому:
Вы можете использовать
SetWindowsHookEx()
установитьWH_CALLWNDPROC
сообщение крючок целевого окна thread, а затем обратный вызов крюка может обрабатывать сообщения окна, такие какWM_LBUTTON(DOWN|UP)
, в самом целевом окне илиBN_CLICKED
в родительском окне целевого окна. Предостережение - это обратный вызов, который должен быть реализован в DLL, поэтому крючок может быть введен в целевой процесс. Вы можете получить идентификатор потока целевого окна, используяGetWindowThreadProcessId()
.Вариант этого будет состоять в том, чтобы вместо этого установить
WH_GETMESSAGE
крюк вместо этого, а затем вы можете использоватьPostMessage()
, чтобы отправить сообщение пользовательского окна в целевое окно. Затем обратный вызов крюка может использоватьSetWindowLongPtr()
илиSetWindowSubclass()
для подкласса целевого окна напрямую и/или его родителя для дальнейшей обработки сообщений.Вы можете использовать
SetWinEventHook()
для мониторинга событийEVENT_OBJECT_INVOKED
, таких как щелчки на кнопках. DLL не требуется, если вы используете флагWINEVENT_OUTOFCONTEXT
, но в качестве предостережения для инсталляционного потока нужен активный цикл сообщений, чтобы события могли обрабатываться через границы процесса.
Чтобы установить крючок окна, вам необходимо вызвать API SetWindowsHookEx. Вот статья с исходным кодом, который демонстрирует использование: Hooks and DLLs
@RemyLebeau Я опубликовал один из способов сделать это. Пожалуйста, напишите свой собственный ответ отдельно, если он отличается от моего. –
- 1. Перехват всех событий мыши
- 2. событий JavaScript мыши перехват
- 3. Перехват событий мыши в окнах
- 4. Перехват мыши с другой программы
- 5. Перемещение оконной регрессии
- 6. Перехват мыши над href из расширения Firefox
- 7. Положение мыши, которое возвращает позицию без оконной панели
- 8. Событие для оконной ручки Нажмите
- 9. Как QApplication уведомляется оконной системой?
- 10. Перехват событий колесика мыши QListWidget с полосами прокрутки
- 11. Перехват щелчков мыши, когда мышь висит над элементом управления
- 12. Перехват (и, возможно, отмена) обработчиков событий мыши/клавиатуры страницы
- 13. обнаруживает, что браузер поддерживает перехват события правой кнопкой мыши
- 14. Изменить цвет оконной рамки
- 15. Ошибка создания оконной ручки
- 16. Менеджер оконной обработки
- 17. Быстрая печать оконной консоли
- 18. Шпионаж при перетаскивании оконной строки окон
- 19. jQuery цикл Перехват кликов
- 20. cx_freeze ошибка оконной консоли Windows
- 21. Как отслеживать разбивку оконной формы?
- 22. Как прервать конструктор оконной формы?
- 23. Возвращаемое значение из оконной процедуры
- 24. Android AlertDialog: ошибка оконной ошибки
- 25. Развертывание Rails с оконной машины
- 26. Запрещение изменения размера оконной формы
- 27. Обновления таблицы с оконной функцией
- 28. Перехват WebView
- 29. Перехват localStorage.getItem()
- 30. Перехват onOptionsItemSelected
Это лучший ответ, но ему нужны примеры кода – FindOutIslamNow