2011-07-06 62 views
-1

我感到沮喪。無論我的應用程序是否專注,我花了數小時尋找一段好的代碼來捕獲任何窗口中的按鍵事件。我需要創建一個應用程序在後臺工作以捕獲F5鍵。有沒有人有任何代碼?在VB.NET中捕獲按鍵事件

回答

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添加處理程序,您使用AddHandlerAddressOf

AddHandler HookManager.KeyDown AddressOf KeyDown 

功能KeyDownKeyUp是這樣的。

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

我對VB.NET真的很陌生,有沒有什麼辦法可以給我一個原始的,簡單的VB.NET答案? – Logan

0

有的this topic重複,這是我與細節的VB.NET溶液回答。它使用Tim Coker建議的相同的Hook庫。