C#でマウスフックをする


「C#でマウスフックは出来ない」ってどこかに書いてあった気がするけどがっつりMicrosoftにドキュメントがあった。

http://support.microsoft.com/kb/318804/ja

使い方は中のソースを参考にしてもらえればいいかな。

ただEventHandlerを使ってるあたりあまりフックする意味がないかも。

[c]

this.Button1.Click += new EventHandler(Hook_Event);

this.Button1.Click += new EventHandler(button1_Click);

[/c]

というふうに実際の処理とは別にイベントハンドラを追加しておいて

[c]

private void Hook_Event(Object sender, EventArgs e)

{

if (ahoFlg == false) {

MessageBox.Show(“あほか”);

return false;

}

return true;

}

[/c]

というふうにしておけばいいと思う。

フォーム全体でマウスイベントを無効にしたい場合は便利かもしれないけど、それも同じようにイベントハンドラ追加すればいいだけじゃ・・・。

あとこんな記述があった

Global hooks are not supported in the .NET Framework

Except for the WH_KEYBOARD_LL low-level hook and the WH_MOUSE_LL low-level hook

低レベルのフックしか使えないのと.NET Frameworkではサポートしてないって名言してる。

一応使えるけど自己責任ってことか。

どんな弊害が出てくるのかわからないので、実験的なコードだけで使った方がよさそう。


この投稿へのコメント

コメントはありません。

コメントを残す

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL