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

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

您可以使用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; } } } }