質問するログイン新規登録

回答編集履歴

1

補足

2015/10/30 15:47

投稿

KoichiSugiyama
KoichiSugiyama

スコア3041

answer CHANGED
@@ -4,8 +4,10 @@
4
4
 
5
5
  「グローバルフック」で検索すれば、詳しく解説されているサイトを見つけることが可能だと思います。
6
6
 
7
- ただ、グローバルフックではキー入力の検知と、そのキー入力がなかったことにすることはできますが、後続のフックチェーンに違うキーが入力されたという情報を渡すことはできません。一旦、キー入力をなかったことにして、改めてプログラム的に目的のキーが入力されたようなメッセージを送ることになります。
7
+ ただ、グローバルフックではキー入力の検知と、そのキー入力がなかったことにする、ということはできますが、後続のフックチェーンに違うキーが入力されたという情報を渡すことはできません。一旦、キー入力をなかったことにして、改めてプログラム的に目的のキーが入力されたようなメッセージを送ることになります。
8
8
 
9
+ それと、グローバルフックは自作のアプリケーションだけでなく、システム全体に影響する機能ですので、デバッグ中に一つ間違えるとOSごと再起動しなければいけなくなるような代物であることに気を付けてください。
10
+
9
11
  > WindowsのGUIかつ常駐ソフトなので、C++のMFCかC#のWindows Formsあたりになると思うのですが、.NETだとできないこととかありますでしょうか?(1)
10
12
 
11
13
  Microsoft公式には.NETではグローバルフックをサポートしていないそうなのですが、すでに.NETでのグローバルフックのクラスライブラリを公開されている方もおられます(ただし、フックできる機能に制約があるみたいです)。「グローバルフック .NET」で検索してみることをお勧めします。
@@ -18,4 +20,4 @@
18
20
 
19
21
  > できればキーボードだけでなくマウスも使えるようにして Ctrl-Shift-ホイールボタンといった組み合わせでも任意のキーを出力できるようにしたいのですができるのでしょうか?(3)
20
22
 
21
- マウスのメッセージをフックすればその時に押されているCtrlとShiftについては状態が取得できますので、このメッセージをなかったことにして、別のキー入力メッセージを送ればいいと思います。
23
+ マウスのメッセージをフックすればその時に押されているCtrlとShiftについては状態が取得できますので、このメッセージをなかったことにして、別のキー入力メッセージを送ればいいと思います。