每当点击或双击背面的按钮时,Surface都会发送信号WindowsKey+F20/19,我想在我的应用程序中捕捉到这一点。
我见过几个问题关于何时按下Windows键的检测,在没有PInvoke的情况下,这在C#中似乎是不可能的。
但是,我不确定这是否也适用于作为修饰符的Windows键。似乎是这样,但我想确定一下。
ModifierKeys enum文档列出了Windows,似乎没有关于这个键的特殊说明。
因此,我已经将主窗口的OnPreviewKeyDown连接到以下代码:
private void MainWindow_OnPreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.SystemKey == Key.F10 &&
e.KeyboardDevice.Modifiers.HasFlag(System.Windows.Input.ModifierKeys.Windows)
{
Console.WriteLine("Succes!");
}
}如果我听了alt修饰符键,这段代码就能工作,但是如果我按下Windows+F10 e.KeyboardDevice.Modifiers等于None,那么if条件就会失败。
我遗漏了什么吗?还是应该走PInvoke路线?
发布于 2017-02-21 16:33:51
下面的代码应该能够检测到Windows+F10
private void MainWindow_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.SystemKey == Key.F10 && (Keyboard.IsKeyDown(Key.LWin) || Keyboard.IsKeyDown(Key.RWin)))
{
Console.WriteLine("Succes!");
}
}https://stackoverflow.com/questions/42372713
复制相似问题