我目前正在构建一个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不会对所有按钮都一致?或者我的方法中缺少一些东西?