2011-07-06 65 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库。