2014-04-23 37 views
1
KeyEventArgs e = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource, 0, keyData); 

Keyboard.PrimaryDevice.ActiveSource为null,程序停止工作。我也试过:WPF KeyEventArgs第二个参数为空

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

但仍然为空,我不能替换mw到这,因为代码是在不同的文件类。

我想从其他窗口捕捉键盘,只有当我捕捉键盘与我的程序的当前活动窗口的代码才工作。

有什么想法?

回答

1

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

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

您是否需要处置HwndSource? – Andy

相关问题