在c#(wpf)中捕获windows密钥

我按下任何按钮时,我写了一个小节目,在屏幕上显示声音和图像。 当我的一个小孩爬到我的膝盖上并开始按键时,我总是开始它,当然是随机的。

它工作正常,除了2个键,其中一个是ON / OFF开关,另一个是Windows键。 (CTRL-ESC相当于我相信)我可以在按下它时拦截它,但只有在startmenu显示之后才会拦截它。

我使用的事件是UIElement.KeyDown,到目前为止我能想到的是:( e是KeyEventArgs)

if (e.Key == Key.LWin) e.Handled = true; 

但是比开始窗口已经显示我害怕。

我已经有1个答案,但非常想知道是否有任何wpf支持?

我怀疑编程主开/关开关可能不可能? 否则,任何帮助也会受到欢迎..

你需要一个键盘钩子 。 不幸的是,这必须通过P / Invoke来完成; 托管代码无法完成。

看看Baby Smash! 作者:Scott Hanselman。 它位于http://www.codeplex.com/babysmash Github的代码丛中, url为https://github.com/shanselman/babysmash

或者,在CodeProject上查看ShapeShow ,这是类似的。

请参阅http://msdn.microsoft.com/en-us/library/system.windows.input.key(v=VS.90).aspx

在底部你会看到一个简单的例子,我认为你正在寻找的东西是这样的:

左窗口键:System.Windows.Input.Key.LWin

右键窗口:System.Windows.Input.Key.RWin

例:

 private void OnKeyDownHandler(object sender, KeyEventArgs e) { if (e.Key == Key.LWin) { textBlock1.Text = "You Entered: " + textBox1.Text; } }