C# 如何模拟按键
我知道如何使用SendKeys(),但如果我想模拟按住ESCAPE键5秒钟,该如何操作?尝试使用计时器。。。使用System.Forms.Timer。。。5000毫秒。。。然后,如果5000ms结束,关闭计时器。您可以PInvokeC# 如何模拟按键,c#,C#,我知道如何使用SendKeys(),但如果我想模拟按住ESCAPE键5秒钟,该如何操作?尝试使用计时器。。。使用System.Forms.Timer。。。5000毫秒。。。然后,如果5000ms结束,关闭计时器。您可以PInvokekeybd\u event并按住Escape键5秒钟,然后释放它: [DllImport("user32.dll")] static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr
keybd\u event
并按住Escape键5秒钟,然后释放它:
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
keybd_event(VK_ESCAPE, 0, 0, 0) // KEY_DOWN
System.Threading.Thread.Sleep(5000);
keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0) // KEY_UP
再次阅读问题,这不是关于阅读长按键,而是关于发送一个。我猜他想通过编程生成类似于
KeyDown
的内容,5秒钟后生成keydup
事件,而不是发送按键并等待5秒钟……只是出于好奇,我可以理解从用户输入中检测此类事件的需要,但为什么要以编程方式进行模拟?如何在我的项目中使用/添加VK_ESCAPE和KEYEVENTF_KEYUP?const int VK_ESCAPE=27;const int keyevent fu KEYUP=2;嗯。。。看看这个:我在测试一个abit,如果我用VK_a替换VK_ESCAPE,我应该在文本字段中得到“aaaaaaaaaa”,如果我睡眠X秒,我应该吗?我一次只得到一个(用定时器循环测试)你正在使用KEYEVENTF\U KEYUP=0x02对吗?KEYEVENTF\U KEYUP
应该是2
或0x02
。我认为,当您在按住A键后休眠应用程序线程时,它不会响应keybd_事件(因此只有一个A
写在应用程序的文本框中)。使用计时器或制作另一个线程。