1

WinEventHook の起動が確実に機能していないようです。イベント フックがイベントのみを監視する (または特定されたイベント プロシージャ関数を実行する) 場合がある原因は何ですか?

すなわち。IE8 BHO 内

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

私は非常に定期的にイベントを取得していますが、最近のビルドの後、MS の「アクセス可能なイベント ウォッチャー」も実行している場合を除いて機能しません。

最近のビルドでは SetWinEventHook を変更していないので、これが原因ではないと思います。他のすべてのスレッド/メッセージのポンピング アクションは期待どおりに行われているため、スレッドでのメッセージのポンピングの失敗が原因であるとは考えていません。

http://www.quirksmode.org/dom/events/tests/DOMtree.htmlを使用して並べ替えイベントを取得し、テスト要素を追加/削除するテスト。

編集:さらにテストすると、ビルドではなく「アクセス可能なイベントウォッチャー」
の実行を停止したことが変更の可能性があるようです。

「アクセス可能なイベントウォッチャー」なしでイベントフックによってキャプチャされたイベントの範囲は、[最初、最後) または eventMin から eventMax-1 のように見えます。これは、「アクセス可能なイベントウォッチャー」を開始するときにドキュメントSetWinEventHookに従っていないため、範囲が変更されます。 [first,last] のように見えるので、EVENT_OBJECT_FOCUS の eventMax を使用すると、EVENT_OBJECT_REORDER が表示されるという望ましい結果が得られるようです。

私がここに欠けているものはありますか、それともドキュメントが間違っていて、イベントウォッチャーも何かをしていますか?

4

0 に答える 0