C#P/调用键盘事件
我一直在使用一些p/Invoke代码来模拟按键,但我无法解决如何一次按下多个键。我试图模拟按下并按住CTRL键,然后按下C键和V键,所以只需复制并粘贴 到目前为止,我使用的代码是这样的,但到目前为止,我只能按CTRL键,不能按住CTRL键,然后按C和V键:C#P/调用键盘事件,c#,pinvoke,keypress,C#,Pinvoke,Keypress,我一直在使用一些p/Invoke代码来模拟按键,但我无法解决如何一次按下多个键。我试图模拟按下并按住CTRL键,然后按下C键和V键,所以只需复制并粘贴 到目前为止,我使用的代码是这样的,但到目前为止,我只能按CTRL键,不能按住CTRL键,然后按C和V键: [DllImport("user32.dll", SetLastError = true)] static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwEx
[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);
}
如果有任何建议,我将不胜感激。谢谢。每次击键都应调用keybd\u事件两次,一次按下,一次释放,第三个参数包括位KEYEVENTF\u KEYUP。当然,您应该在释放任何一个键之前按下两个键。有关在.NET Compact Framework上使用keybd_事件按“SHIFT+TAB”的工作示例,请参见(可能略有不同)
请注意,keybd_事件已被取代,但仍应有效。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
顺便说一下:最后一个参数是
uintpttr
,+1SendInput
调用起来相当棘手。更容易坚持keybd\u事件
。