启动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的期望结果。
这里是否有我遗漏的东西,或者说文档是错的,事件观察者也在做什么?