SetWindowsHookEx для всего процесса, а не для всей системы - PullRequest
1 голос
/ 05 декабря 2010

Я хотел бы использовать SetWindowHookEx для перехвата сообщений WM_CREATE (или HCBT_CREATEWND) в процессе перед созданием окна.

Используя hMod и dwThreadId, можно определить, будет ли ловушка системной-в целом (установив hMod равным gInstance библиотеки DLL и dwThreadId равным 0), его также можно использовать для мониторинга единственного потока в процессе (hMod = 0 и dwThreadId = ThreadToMonitorId).

Тем не менее, я хотел бы контролировать несколько потоков.Является ли это возможным?Я полагаю, я могу просто вызвать SetWindowHookEx для нескольких потоков, но я бы предпочел не делать этого, поскольку это усложнит ситуацию.Есть ли другие альтернативы?

Спасибо!

Ответы [ 2 ]

1 голос
/ 05 декабря 2010

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 100 * * * * * * * * *. Иногда это окно взаимодействия, которое намеренно скрыто, вряд ли вы захотите узнать об этом. Проверьте свои предположения с помощью Spy ++, идентификатор потока владельца отображается в свойствах окна, вкладка «Процесс».

Если у него есть несколько потоков, создающих окна, о которых вы хотите знать, тогда вы захотите установить отдельные хуки.

1 голос
/ 05 декабря 2010

Вы можете подключить все процессы и обрабатывать только WM_CREATE для текущего процесса.Поскольку ловушка вызывается в контексте самого процесса, вы можете просто сравнить GetProcessId() с нужным идентификатором процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...