我感到沮喪。無論我的應用程序是否專注,我花了數小時尋找一段好的代碼來捕獲任何窗口中的按鍵事件。我需要創建一個應用程序在後臺工作以捕獲F5鍵。有沒有人有任何代碼?在VB.NET中捕獲按鍵事件
-1
A
回答
1
下面的評論中還檢查了Lucianovici手記
我知道這是所有C#和OP問VB.Net,但概念是相同的...
我寫了一個簡單的實用程序,使用this project處理全球按鍵。下載庫並在項目中添加對其的引用,然後導入Gma.UserActivityMonitor
命名空間
在表單加載事件中添加處理程序。
HookManager.KeyDown += KeyDown;
HookManager.KeyUp += KeyUp;
在這些方法中,我正在尋找要按的控制鍵。
void KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.LControlKey || e.KeyCode == Keys.RControlKey)
{
//Do Stuff
}
}
void KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.LControlKey || e.KeyCode == Keys.RControlKey)
{
//Do Stuff
}
}
隨着寫入的方式,按鍵仍然可供其他應用程序處理。如果您想「捕獲」該鍵並暫停其他應用程序的處理,請在您的事件處理程序中將Handled屬性設置爲true。
e.Handled = true;
編輯:上面的代碼轉換爲VB.Net
要在VB.Net添加處理程序,您使用AddHandler
和AddressOf
。
AddHandler HookManager.KeyDown AddressOf KeyDown
功能KeyDown
和KeyUp
是這樣的。
Sub KeyDown(ByVal sender as Object, ByVal e as KeyEventArgs)
If e.KeyCode = Keys.LControlKey Or e.KeyCode = Keys.RControlKey Then
'Do Stuff
End If
End Sub
0
您必須使用Form keypress事件...在哪個表單上要捕獲F5按鍵事件。
檢查: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress(v=vs.71).aspx
0
爲了捕獲按鍵事件當表單沒有焦點,你將需要進入一些非常低級的東西。全局鍵盤鉤子通常不可能在C#或VB.NET,但這裏的文章,可以幫助你:
Managing Low-Level Keyboard Hooks in VB .NET
*請務必在文章
0
有的this topic重複,這是我與細節的VB.NET溶液回答。它使用Tim Coker建議的相同的Hook庫。
相關問題
- 1. 捕獲「shift + tab」按鍵事件
- 2. WPF子類捕獲按鍵事件
- 3. MVC Html.BeginForm捕獲按鍵事件
- 4. 未捕獲觸發的按鍵事件?
- 5. 捕獲按鍵事件使用xlib
- 6. 在Silverlight中捕獲關鍵事件
- 7. vb.net按鍵事件(Visual Studio 2010中)
- 8. VB.NET中文本框的按鍵事件
- 9. Griffon捕獲關鍵事件
- 10. 捕獲Android軟鍵事件
- 11. 使用VB.Net捕獲所有鍵盤事件
- 12. 捕獲按鈕事件
- 13. JQuery按鍵與keydown事件捕獲所有鍵碼
- 14. wxpython捕獲wx.Frame中的鍵盤事件
- 15. 捕獲iPhone鍵盤按下按鈕事件的形式
- 16. 如何捕獲wxPropertyGrid中的每個按鍵的事件
- 17. 如何在非活動選項卡上捕獲按鍵事件
- 18. Pyhook在6次按下後停止捕獲關鍵事件
- 19. 從VB6轉換按鍵事件到VB.NET
- 20. VB.net中的全局熱鍵捕獲
- 21. 鍵盤按鍵捕獲
- 22. 如何捕獲Windows Mobile 6上的硬件按鍵事件?
- 23. NSMenu打開時捕捉按鍵事件
- 24. 在ngTable中捕獲事件
- 25. 在vb.net中最大化或恢復事件之前捕獲
- 26. 如何在VB.NET中的listview上捕獲autosize雙擊事件?
- 27. 獲取按鍵事件
- 28. 在黑莓鍵盤上捕獲按鍵
- 29. 在java面板中捕獲按鍵
- 30. 如何在Ruby中捕獲按鍵?
我對VB.NET真的很陌生,有沒有什麼辦法可以給我一個原始的,簡單的VB.NET答案? – Logan