Зайдите и войдите "все" в очереди сообщений Windows - PullRequest
3 голосов
/ 20 августа 2009

Кто-нибудь получил пример работающего кода, как подключиться к очереди сообщений Windows (post / sendMessage) и регистрировать там все сообщения? Желательно в Python. Я заинтересован в этом, чтобы легче было создавать тестовые сценарии, эмулирующие пользовательский ввод.

Ответы [ 3 ]

2 голосов
/ 04 декабря 2009

На самом деле есть пакет, который оборачивает функцию SetWindowsHookEx, который называется pyHook . Я использовал его раньше, чтобы написать примитивный регистратор ключей (в качестве эксперимента по самоконтролю, чтобы помочь с отчетом о рабочих часах), и он отлично сработал.

1 голос
/ 09 декабря 2009

Вы можете использовать SetWinEventHook , чтобы перехватить большую часть активности оконной системы. Преимущество традиционных хуков в том, что вы можете делать это из своего процесса, то есть вам не нужно писать DLL для перехвата. Кроме того, когда поток, вызвавший SetWinEventHook, заканчивается, Windows автоматически освобождает обработчик. Вне контекста перехват не позволяет вам завершать работу других приложений, так как минимальная ошибка на внедренной DLL, возможно, подойдет.

1 голос
/ 20 августа 2009

Обычно это делается с помощью SetWindowsHookEx Function .

В Python вы, вероятно, должны использовать сторонние библиотеки, такие как Python для расширений Windows . PyCWnd.HookMessage и PyCWnd.HookAllKeyStrokes может быть тем, что вам нужно.

...