我想检测Windows应用程序中的组合键(例如Control-A
)。 KeyDown
事件处理程序包含有关按下的最后一个键的信息。但是我怎样才能知道Control键是否被按下?在通用Windows应用程序中获取键盘状态
9
A
回答
17
您可以使用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
}
};
+1
如果我正确理解你的问题,而不是订阅你的页面的'KeyDown'事件,订阅'Window.Current.CoreWindow.KeyDown'就像我的答案。 –
+1
完美!非常感谢! – ispiro
6
您可以使用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;
}
}
}
}
相关问题
- 1. 如何获取iOS 10通知中的应用程序状态?
- 2. 通用Windows平台(UWP)应用程序调用触摸键盘
- 3. 在rails应用程序中获取用户的skype状态
- 4. 在启动期间在主要方法中获取WPF应用程序中的键盘状态
- 5. 通过C++应用程序获取套接字状态(Linux)
- 6. 在ocamlsdl中读取键盘状态
- 7. 在Windows中开发C#应用程序来获取Android电池状态
- 8. (Windows phone 10)Handle应用程序状态
- 9. 当我的应用程序没有焦点时,如何捕获键盘状态?
- 10. 在离子应用程序中获取网络状态
- 11. 在应用程序中获取低功耗状态
- 12. 如何在VB.NET 2005应用程序中获取键盘按键值?
- 13. 如何在Mac OSX上获取键盘按键状态?
- 14. 获取自定义键盘中isSticky键的当前状态
- 15. 如何在状态栏中获得PERMANENT应用程序通知程序?
- 16. 获取数据,而应用程序在后台状态
- 17. 无法通过键盘在Android应用程序中输入?
- 18. 如何获取Windows Phone通用应用程序的应用程序版本?
- 19. 在AJAX应用程序中保持Web应用程序状态
- 20. 在SAP应用程序中维护Windows状态
- 21. 如何在Windows Phone 7中维护应用程序状态?
- 22. 在应用程序中读取硬件键盘的输入
- 23. WPF应用程序中的Windows 7触摸屏键盘
- 24. 如何通过Facebook应用程序获取Facebook用户的登录状态?
- 25. 低级键盘挂钩问题:应用程序不集中时键盘状态丢失(德尔福)
- 26. 保存窗口状态,当应用程序在托盘
- 27. (VB或C#)在系统托盘中运行应用程序并听取键盘输入,即使应用程序未处于焦点状态
- 28. 如何在Windows窗体应用程序中创建复合键盘快捷键?
- 29. 如何获取mac上键盘上某些键的状态?
- 30. 获取状态信息Windows媒体播放器(独立应用程序)
正常情况下,你会'KeyPressed == Control | A' – kevintjuh93
@KevinKal谢谢。但我试过了。它只是'A'。 – ispiro
控制是一个系统键,因此它的记录方式不同。我不确定它是如何完成的,但这是你看到的问题 – rmn36