c#听键盘组合



我想写一个简单的program,在某些地方发送我的用户和密码,例如当我想登录网站时,我发现这个项目在听键盘。

所以我有这个功能:

private void HookManager_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
}
private void HookManager_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
}
private void HookManager_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
}

当我按下例如a的键时,我会得到这样的结果:

int value = e.KeyValue; // 65
Keys key = e.KeyCode;   // A

所以我不知道如何捕获特定的keyboard combination,而不仅仅是一个key,例如Ctrl + l

您可以在KeyDown中使用这样的代码:

if(e.KeyCode == Keys.F1 && (e.Alt || e.Control || e.Shift))
{
}

基于MSDN中的KeyEventArgs文档:

KeyEventArgs指定用户按下的键以及是否同时按下任何修改键(CTRL、ALT和SHIFT(,它与每个KeyDown或KeyUp事件一起传递。

当用户按下任何键时,KeyDown事件都会发生。The KeyUp事件发生在用户释放密钥时。重复KeyDown事件如果按键被按下,但只有一次,则每次按键重复时都会发生KeyUp事件是在用户释放密钥时生成的。

按键时也会发生KeyPress事件。A.KeyPressEventArgs随每个KeyPress事件一起传递,并指定每次按键后所组成的字符。

重写ProcessDialogKey((方法是通用解决方案:

protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == (Keys.Control | Keys.I))
{
MessageBox.Show("Ctrl+I");
return true;
}
return base.ProcessDialogKey(keyData);
}

最新更新