我想将文本从剪贴板粘贴到某个程序的文本框中。所以我尝试使用keybd_event。
keybd_event(VK_CONTROL,0x1D, 0, 0);
keybd_event('V', 0x2F, 0, 0);
keybd_event('V', 0x2F, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0x1D, KEYEVENTF_KEYUP, 0);
但是不会执行。所以我尝试了不同的方式
keybd_event(VK_CONTROL,0x1D, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event('V', 0x2F, 0, 0);
keybd_event('V', 0x2F, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0x1D, KEYEVENTF_KEYUP, 0);
因此效果很好。但是,此后,所有键盘输入都已按下ctrl键输入。也许我认为键入消息不起作用
如何解决此问题?
但是,从那时起,所有键盘输入都已使用按下Ctrl键。也许我认为键入消息不起作用
您模拟右CONTROL
WM_KEYDOWN
,但是左CONTROL
WM_KEYUP
。 因此未释放右侧的CTRL
键。
以下代码将起作用:
keybd_event(VK_CONTROL, 0x1D, KEYEVENTF_EXTENDEDKEY | 0, 0);
keybd_event('V', 0x2F, KEYEVENTF_EXTENDEDKEY | 0, 0);
keybd_event('V', 0x2F, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0x1D, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
扩展键标志(
KEYEVENTF_EXTENDEDKEY
)指示键是否为扩展键,例如右手出现在增强的101键或102键键盘上的ALT和CTRL键。如果是扩展键,则值为1;否则为0。否则为0。
keybd_event函数已被取代。请改用WM_KEYUP
。