下面是我的代码:
keybd_event(VK_MENU, 0, 0, 0); keybd_event(VK_RETURN, 0, 0, 0); Sleep(200); keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
第一行将按Alt第二行将按Enter键(或Return键),第四行将释放Alt,第五行将释放Enter(或Return)。
pvcm50d11#
您没有设置KEYEVENTF_EXTENDEDKEY标志以保持按键状态。请将代码更改为:
KEYEVENTF_EXTENDEDKEY
keybd_event(VK_MENU, 0, KEYEVENTF_EXTENDEDKEY, 0); keybd_event(VK_RETURN, 0, KEYEVENTF_EXTENDEDKEY, 0); Sleep(200); keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
而且,如果你只是发送Alt + Enter,你真的不需要中间的睡眠您可以在MSDN page中看到所有键控代码。
VK_MENU
VK_LMENU
VK_RMENU
qkf9rpyu2#
扫描代码被注入到输入堆栈的较低层。而VK在堆栈中的位置相当高。一些应用程序,比如游戏,只在较低层监听键盘输入,将错过任何注入的VK。如果你试图模拟一个用ALT+221按下的,我怀疑Windows正在中间的某个地方做转换。- selbie Mar 12,2018年0时51分
2条答案
按热度按时间pvcm50d11#
您没有设置
KEYEVENTF_EXTENDEDKEY
标志以保持按键状态。请将代码更改为:而且,如果你只是发送Alt + Enter,你真的不需要中间的睡眠
您可以在MSDN page中看到所有键控代码。
VK_MENU
VK_LMENU
VK_RMENU
qkf9rpyu2#
扫描代码被注入到输入堆栈的较低层。而VK在堆栈中的位置相当高。一些应用程序,比如游戏,只在较低层监听键盘输入,将错过任何注入的VK。如果你试图模拟一个用ALT+221按下的,我怀疑Windows正在中间的某个地方做转换。- selbie Mar 12,2018年0时51分