首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按下Windows修饰符键时,Keyboard.Modifiers为无

按下Windows修饰符键时,Keyboard.Modifiers为无
EN

Stack Overflow用户
提问于 2017-02-21 16:24:38
回答 1查看 892关注 0票数 4

每当点击或双击背面的按钮时,Surface都会发送信号WindowsKey+F20/19,我想在我的应用程序中捕捉到这一点。

我见过几个问题关于何时按下Windows键的检测,在没有PInvoke的情况下,这在C#中似乎是不可能的。

但是,我不确定这是否也适用于作为修饰符的Windows键。似乎是这样,但我想确定一下。

ModifierKeys enum文档列出了Windows,似乎没有关于这个键的特殊说明。

因此,我已经将主窗口的OnPreviewKeyDown连接到以下代码:

代码语言:javascript
复制
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路线?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-21 16:33:51

下面的代码应该能够检测到Windows+F10

代码语言:javascript
复制
private void MainWindow_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.SystemKey == Key.F10 && (Keyboard.IsKeyDown(Key.LWin) || Keyboard.IsKeyDown(Key.RWin)))
    {
        Console.WriteLine("Succes!");
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42372713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档