为什么SetWinEventHook有时会停止/暂停监控事件?

时间:2011-03-02 22:25:21

标签: windows internet-explorer msaa

启动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测试获取重新排序事件并添加/删除测试元素。

修改
在进一步测试后,似乎可能是我停止运行"Accessible event watcher"而不是构建。

没有“可访问事件观察者”的事件挂钩捕获的事件范围似乎是[first,last]或eventMin到eventMax-1,当启动“Accessible”时,不是按照文档SetWinEventHook事件观察者“范围改变并且似乎是[第一个,最后一个]所以使用EVENT_OBJECT_FOCUS的eventMax似乎得到了看到EVENT_OBJECT_REORDER的期望结果。

这里是否有我遗漏的东西,或者说文档是错的,事件观察者也在做什么?

0 个答案:

没有答案