web-dev-qa-db-ja.com

C#でグローバルホットキー処理に取り組むための最良の方法は?

重複の可能性:
WPFと.NET3.5を使用してCTRL + SHIFT +(LETTER)と言うグローバルホットキーを登録するにはどうすればよいですか?

新しいアプリに複数のグローバルホットキーを入れたいのですが(Windowsのどこからでもアプリを制御するため)、Webで見つけた特定のソース/ソリューションはすべて、一種のリンピングソリューション(どちらのソリューションでも)を提供しているようです。 1つのg.hotkey、または実行中に画面上に迷惑なマウス遅延を作成するソリューションの場合のみ)。

ここにいる誰かが、私がこれを達成するのを助け、私が学ぶことができるリソースを知っていますか?何か?

ありがとう! :)

24
jeevan

私が見つけた最も良い解決策は http://bloggablea.wordpress.com/2007/05/01/global-hotkeys-with-net/

Hotkey hk = new Hotkey();

hk.KeyCode = Keys.1;
hk.Windows = true;
hk.Pressed += delegate { Console.WriteLine("Windows+1 pressed!"); };

hk.Register(myForm); 

さまざまなラムダをさまざまなホットキーに設定する方法に注意してください

40
Ohad Schneider

http://www.codeproject.com/KB/cs/CSLLKeyboardHook.aspx

.net3.5を使用していない場合。

7
arul

これを処理するには、P/Invokeを使用して各ホットキーのRegisterHotKey()を呼び出し、NativeForm(WinFormsを使用していると仮定)を使用してWM_HOTKEYメッセージの通知を受け取ります。これにより、ほとんどのホットキーコードが1か所に保持されます。

5
Andy