Почему SetWinEventHook иногда останавливает / приостанавливает мониторинг событий? - PullRequest
1 голос
/ 03 марта 2011

Запуск WinEventHook не работает надежно. Что может вызвать перехват событий только для мониторинга событий (или запуска определенной функции обработки событий)?

т. внутри IE8 BHO

HWINEVENTHOOK eHook = ::SetWinEventHook(EVENT_OBJECT_SHOW, EVENT_OBJECT_REORDER
 , 0
 , MSAALib_WinEventProc
 , GetCurrentProcessId(), GetCurrentThreadId()
 , WINEVENT_OUTOFCONTEXT );

Я получаю события довольно регулярно, но после недавней сборки он не работает, за исключением случаев, когда я также использую MS "Accessible event watcher", остановка и запуск средства просмотра событий также останавливается и запускает мой процесс называется.

Я не менял SetWinEventHook ни в одной из последних сборок, поэтому я не верю, что это является причиной. Все остальные действия по перекачке потока / сообщения выполняются, как и ожидалось, поэтому я не верю, что причиной является перекачка сообщений в потоке.

Тестирование получения событий переупорядочения с использованием http://www.quirksmode.org/dom/events/tests/DOMtree.html и добавление / удаление тестовых элементов.

Edit:
После дальнейшего тестирования кажется, что изменение могло заключаться в том, что я перестал запускать «Доступный наблюдатель событий» , а не сборку.

Диапазон событий, захваченных перехватчиком событий без «Доступного наблюдателя событий», по-видимому, равен [first, last) или eventMin для eventMax-1, что не соответствует документу SetWinEventHook при запуске «Доступный наблюдатель событий» диапазон изменяется и представляется [первым, последним], поэтому использование eventMax из EVENT_OBJECT_FOCUS, похоже, дает желаемый результат просмотра EVENT_OBJECT_REORDER.

Есть ли что-то, чего я здесь упускаю, или это просто документ, и наблюдатель событий что-то делает?

...