keybd_event函数保持密钥问题

时间:2014-09-01 18:20:43

标签: c# keyboard-events

我目前正在构建一个c#应用程序,它使用keybd_event将键击发送到其他应用程序。但是它没有像我预期的那样工作。

我的新闻发布方法是这样的:

public void PressKey(string key)
{
    var keyCode = Keycodes.StringToInt(key);
    keybd_event((byte)keyCode, 0, 0x0001 | 0, 0);
}

public void ReleaseKey(string key)
{
    var keyCode = Keycodes.StringToInt(key);
    keybd_event((byte)keyCode, 0, 0x0001 | 0x0002, 0);
}

只要在其他应用程序中输入一封信,它们就能正常工作。但是,当我试图按住一个键时,就会出现奇怪的行为。

例如,如果我写:

PressKey("LeftShift");

我得到了预期的结果。当应用程序运行时,一直按下shift。

然而,当我尝试这个时:

PressKey("W");

我期待看到无数的" w"键入。但相反,我只得到一个" w"。

所以我的问题是,为什么keybd_event不会对所有按钮都一致?或者我的方法中缺少一些东西?

1 个答案:

答案 0 :(得分:0)

在这个特定的项目中,我最终使用了第三方库InputManager,它按预期工作。