我在 c# 中使用 winapi 发送组合键时遇到了奇怪的问题。我的目标是创建一个发送两个键的方法,fe SHIFT + HOME:
private const int WM_KEYDOWN = 0x0100;
private const int WM_KEYUP = 0x0101;
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
public static void SendKey(byte key1, byte key2)
{
//SHIFT down
keybd_event(key1, 0, WM_KEYDOWN, UIntPtr.Zero);
//press HOME
keybd_event(key2, 0, WM_KEYDOWN, UIntPtr.Zero);
keybd_event(key2, 0, WM_KEYUP, UIntPtr.Zero);
//SHIFT up
keybd_event(key1, 0, WM_KEYUP, UIntPtr.Zero);
}
问题是在方法完成执行后仍然按下 key1 (SHIFT)。换句话说,附加的方法调用将从上一次运行中按下的 SHIFT 开始。它看起来非常简单,但我找不到使它工作的解决方案。我查看了许多相关的 SO 问题并尝试了它们,但问题仍然存在。任何帮助表示赞赏。