Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#P/调用键盘事件_C#_Pinvoke_Keypress - Fatal编程技术网

C#P/调用键盘事件

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

我一直在使用一些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 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
,+1
SendInput
调用起来相当棘手。更容易坚持
keybd\u事件