1
KeyEventArgs e = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource, 0, keyData);

Keyboard.PrimaryDevice.ActiveSource が null で、プログラムが動作を停止します。私も試しました:

MainWindow mw = new MainWindow();
System.Windows.PresentationSource source = System.Windows.PresentationSource.FromVisual(mw);
KeyEventArgs e = new KeyEventArgs(Keyboard.PrimaryDevice, source, 0, keyData);

しかし、まだ null です。コードが別のファイル クラスにあるため、mw をこれに置き換えることはできません。

他のウィンドウからキーボードをキャッチしようとしています。コードは、プログラムの現在アクティブなウィンドウでキーボードをキャッチした場合にのみ機能します。

何か案が?

4

1 に答える 1

2

アプリケーションにフォーカスがないため、null です。次のように、ダミーのSystem.Windows.Interop.HwndSourceを作成できます。

KeyEventArgs kea = new KeyEventArgs(Keyboard.PrimaryDevice, new HwndSource(0, 0, 0, 0, 0, "", IntPtr.Zero), 0, key);
于 2015-03-14T21:55:26.083 に答える