WPF KeyEventArgs第二个参数为null

时间:2014-04-23 16:36:12

标签: wpf keyboard keyeventargs

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替换为此,因为代码位于不同的文件类中。

我正试图从其他窗口抓取键盘,只有当我用程序的当前活动窗口捕捉键盘时,代码才有效。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

它是null,因为您的应用程序没有焦点。您可以创建一个虚拟System.Windows.Interop.HwndSource,如下所示:

KeyEventArgs kea = new KeyEventArgs(Keyboard.PrimaryDevice, new HwndSource(0, 0, 0, 0, 0, "", IntPtr.Zero), 0, key);