C# P/Invoke keyboard_event

本文关键字:event keyboard Invoke | 更新日期: 2023-09-27 18:19:29

我一直在使用一些p/Invoke代码来模拟按键,但我不知道如何一次按下多个键。我试着模拟按住CTRL,然后按C和V,所以只是复制和粘贴。

到目前为止,我使用的代码是这样的,但到目前为止我只能按CTRL,而不能按住它并按C和V:

[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
public const int VK_LCONTROL = 0xA2;
static void Main(string[] args)
{
   keybd_event(VK_LCONTROL, 0, 0, 0);
}

如果有任何建议,我将不胜感激。谢谢

C# P/Invoke keyboard_event

dwFlags控制是否释放密钥。

尝试以下操作:

keybd_event(VK_CONTROL, 0, 0, 0);// presses ctrl
keybd_event(0x43, 0, 0, 0); // presses c
keybd_event(0x43, 0, 2, 0); //releases c
keybd_event(VK_CONTROL, 0, 2, 0); //releases ctrl

keybd_event应为每次击键调用两次,一次按下,一次释放,第三个参数包括位KEYEVENTF_KEYUP。当然,在松开任意一个键之前,您应该同时按下两个键。请参阅此处,以获取在.NET Compact Framework上使用键bd_event按"SHIFT+TAB"的工作示例(可能略有不同)。

请注意,keybd_event已被SendInput取代,但应该仍然有效。