获取通用Windows应用程序中的键盘状态

本文关键字:键盘 状态 应用程序 Windows 获取 | 更新日期: 2023-09-27 18:14:28

我想在Windows应用程序中检测一个键组合(例如Control-A)。KeyDown事件处理程序有关于按下的最后一个键的信息。但是我怎么知道是否控制键被按下了?

获取通用Windows应用程序中的键盘状态

您可以使用CoreVirtualKeyStates.HasFlag(CoreVirtualKeyStates.Down)来确定Ctrl键是否已被按下,如下-

Window.Current.CoreWindow.KeyDown += (s, e) =>
{
    var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
    if (ctrl.HasFlag(CoreVirtualKeyStates.Down) && e.VirtualKey == VirtualKey.A)
    {
        // do your stuff
    }
};

你可以使用AcceleratorKeyActivated事件,无论焦点在哪里,它都会始终捕获事件。

public MyPage()
{
    Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated += AcceleratorKeyActivated;
}

private void AcceleratorKeyActivated(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
    if (args.EventType.ToString().Contains("Down"))
    {
        var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
        if (ctrl.HasFlag(CoreVirtualKeyStates.Down))
        {
            switch (args.VirtualKey)
            {
                case VirtualKey.A:
                    Debug.WriteLine(args.VirtualKey);
                    Play_click(sender, new RoutedEventArgs());
                    break;
            }
        }
    }
}