我想檢測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