2009-06-18 16 views
1

マウスジェスチャーを監視するDLLに、このグローバルマウスフックセットアップがあります。WH_MOUSEフックがもうグローバルでないのはなぜですか?

すべてが完璧に動作しますが、WH_MOUSE_LLのフックセットは低レベルのフックであり、もう1つは外部の注入可能なDLLにある必要はありません。

いったん私が切り替えると、WH_MOUSEというマウスフックがより適切なものに変わると、すべてが崩れます。フックをインストールするメインアプリケーション(フックをインストールするもの)の外側をクリックすると、フックが破損します。:: UnhookWindowsHookExは失敗します。

私はthis guy saying at experts exchangeが見つかりました:

"まさかは、WindowsのXP + SVP2 WH_MOUSEは、グローバル行くことはありません、少なくとも下、あなたは ではなくWH_MOUSE_LLを使用する必要があります。"

共有データセクションを使用するDLLで、フックプロシージャからメッセージを送信せずに、フックを正しくセットアップしました。

なぜこれが変更されましたか?なぜ文書化されていないのですか?誰もこれに遭遇しましたか?ありがとう!ところで

:私は逆に人気StrokeItアプリケーションビットを設計してきたし、それがWH_GETMESSAGEとWH_MOUSEフックの組み合わせを使用して、まだXP/Vista上で動作します...

+0

オートメーションアプリケーションのためにマウスのフッキングを一箇所で行う必要がありました。 Godspeed;) –

+1

アスタリスクやアンダースコアなどの特殊文字をエスケープするには、バックスラッシュを使用します。たとえば、\ * not \ * \ _italic \ _のようになります。 – ephemient

答えて

0

それはグローバルWH_MOUSEフックと私にニュースです私はそれを使用するいくつかのアプリを持っており、彼らはXP、Vista、およびWindows 7で動作し続けるので、もはやサポートされていません。

どのようにフックを設定していますか? SetWindowsHookEx(WH_MOUSE、my_mouse_callback、g_hinstance、NULL)を実行できるはずです。

私が考えることができる唯一のことは、コールバック関数が長時間かかることです。この場合、Windowsはフックを削除するか、CallNextHookExを正しく呼び出さない可能性があります。

0

これがコメントとしてうまくいくかどうかわかりませんが、ここにあります: MSDN WH_MOUSEはスレッドレベルまたはグローバルでサポートされていると思います。

あなたが指摘したように、それを使用しているアプリがたくさんあります。

私の推測では、グローバルWH_MOUSEの特定の実装には、デバッグと修正が必要な問題があります。 「フックが壊れた」と言ったら、どういうことが起こりますか?フックされたアプリがクラッシュしますか?あなたは、マウスイベントが予想されるデバッガをアプリケーションにアタッチして、あなたのフックに本当に何がクラッシュするのかを確認できますか?

関連する問題