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);
}
如果有任何建议,我将不胜感激。谢谢
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取代,但应该仍然有效。