他のWPFアセンブリをたくさん使用するWPF(プリズム)アプリケーションと、他のウィンドウ(wpfとwin32)を含むwin32 dllもあります。wpf/win32の混在アプリケーションでアプリケーション全体のホットキーを定義
ユーザーがファンクションキー(F2〜F12)を押すと、特定のプログラム機能を開きたいとします。このような
何か:
RoutedCommand commandF4 = new RoutedCommand();
commandF4.InputGestures.Add(new KeyGesture(Key.F4));
Application.Current.MainWindow.CommandBindings.Add(new CommandBinding(commandF4, CallCommandF4));
問題がある:メインウィンドウにフォーカスがあるときにのみ動作ありません。私がセカンダリWPFウィンドウ(またはwin32ウィンドウ)を開くと、キーバインディングはそれ以上適用されません。
F4(またはその他のキー)にアプリケーション全体のホットキーを追加する方法はありますか?
または少なくともWPFワイドのホットキーですか?
[入力:
はちょうどあなたが.NET 4.0を使用している場合、あなたは代わりにHMODのPARAM、使用として
を使用するのでは、SetWindowsHookExを使用することに注意してフォーカスは、任意の時点で1つのウィンドウにしか存在できません。](http://msdn.microsoft.com/en-us/library/ms754010.aspx#focus)セカンダリウィンドウでキーバインドをキャッチし、[メッセージング](http://www.google.com/search?q=mvvm+messaging)を使用して、キーが押されたことをMainWindowに伝えることができます。 Win32ウィンドウには、より低いレベルのキーボードフックとソートが必要な場合があります。 –