- - PR -
C# グローバルフックでメッセージを編集して送り返す。
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-01-24 20:34
MicrosoftはC#ではグローバルフックできないっていってますがうそです、できます。
まぁそれは置いといて。 いまグローバルフックをしたときに受け取ったメッセージを横取りして編集して右クリックをできないようにしようとしています、いかがコードです。
messageDisableがTrueの場合にはコマンドを0としてポストして右クリックを無効化したいんですがうまくいきません。(WM_RBUTTONUPが含まれている場合にmessageDisableがtrueになる) ご意見よろしくお願いします。 Reference: ローカルフック: http://www.kab-studio.biz/Programing/Codian/DLL_Hook_SClass/07.html グローバルフック: http://www.kab-studio.biz/Programing/Codian/DLL_Hook_SClass/08.html _________________ 9uiet design( http://quietdesign.rental.allinoneserver.net/ ) - タブ型デスクトップガジェット開発中。Pluginの開発してくれると嬉しいかも。 [ メッセージ編集済み 編集者: 有末 清華 編集日時 2007-01-24 20:36 ] | ||||
|
投稿日時: 2007-01-25 12:08
どこかで「全面的にできない」とドキュメントしてましたっけ? もしあれば、出来るだけフィードバックしてあげてください。 (でないといつまでたっても直らないので) ただし、「全く問題が無い」わけでもありません。 「低レベルフックしか正しく動作しない」という大きな制約が存在します。 なお、低レベルフック「なら」動作するであろうコトは、SetWindowsHookEx() のヘルプの記述から推測することが可能だったような気がします。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||
|
投稿日時: 2007-01-25 12:34
低レベルフックではメッセージの編集はできません。
ただ CallNextHookEx を呼び出さないことでそれ以上メッセージが先に伝わるのを妨害することはできます。 | ||||
|
投稿日時: 2007-01-25 20:26
> どこかで「全面的にできない」とドキュメントしてましたっけ?
たしかC#でのフックの場面に.netではグローバルフックを受け付けないと書いてありました。 >ただ CallNextHookEx を呼び出さないことでそれ以上メッセージが先に伝わるのを妨害することはできます。 それを行ってみたのですがどうもうまくいきません。→マウスボタンが押されているときのreturnを0でもCalNextHookExの戻り値でもなくしてやるとできたんですが、タスクバーやいくつかのウィンドウがクリックできなくなりました(低レベルフックを使っててフックチェーンが壊れたためだと思ってますが・・・) _________________ 有末 清華 crazy(){for;;{you();}} - プログラマの覚書 | ||||
|
投稿日時: 2007-01-26 10:14
その記述のある文書の、URL を教えてください。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||
|
投稿日時: 2007-01-26 12:38
いつもお世話になっております、
>その記述のある文書の、URL を教えてください。 これのことではないでしょうか? http://support.microsoft.com/kb/318804/ja グローバル フックは .NET Framework ではサポートされていない 以前、私もC#でできるか調査していたところ、 本記述でやめた経緯があります。 以上です。 | ||||
|
投稿日時: 2007-01-26 13:41
Microsoft.NET Frameworkではね。 | ||||
|
投稿日時: 2007-01-26 13:50
なるほどー、明言しちゃってるから例外があることは分からないですね。 ということで、一応通報しておきました。 |
1|2|3
次のページへ»