VK_TAB在我的 c++ 程序中无法在 SendInput() 中工作
VK_TAB is not working in SendInput() in my c++ Programe
我正在处理一个项目,我正在使用SendInput()
将粘贴命令发送到另一个应用程序窗口,如下所示:
`INPUT input, vButton, ctrl1, ctrl2;`
input.type = INPUT_KEYBOARD;
input.ki.wVk = VK_CONTROL;
input.ki.wScan = 0;
input.ki.dwFlags = KEYEVENTF_UNICODE ;
input.ki.time = 0;
input.ki.dwExtraInfo = 0;
vButton .type = INPUT_KEYBOARD;
vButton .ki.wVk = 0x56;
vButton .ki.wScan =0;
vButton .ki.dwFlags = KEYEVENTF_UNICODE ;
vButton .ki.time = 0;
vButton .ki.dwExtraInfo = 0;
ctrl1.type = INPUT_KEYBOARD;
ctrl1.ki.wVk = VK_CONTROL;
ctrl1.ki.wScan = 0;
ctrl1.ki.dwFlags = KEYEVENTF_KEYUP |KEYEVENTF_UNICODE ;
ctrl1.ki.time = 0;
ctrl1.ki.dwExtraInfo = 0;
ctrl2.type = INPUT_KEYBOARD;
ctrl2.ki.wVk = VK_TAB;
ctrl2.ki.wScan = 0;
ctrl2.ki.dwFlags = KEYEVENTF_KEYUP ;
ctrl2.ki.time = 0;
ctrl2.ki.dwExtraInfo = 0;
// Send Input To Another Window
::ShowWindow(mainHwnd, SW_SHOWNORMAL);
int retval = SendInput(1, &input, sizeof(INPUT));
retval = SendInput(1, &vButton, sizeof(INPUT));
retval = SendInput(1, &ctrl1, sizeof(INPUT));
retval = SendInput(1, &ctrl2, sizeof(INPUT));`
除了INPUT
有VK_TAB
钥匙外,它工作正常。我想VK_TAB
命令发送到应用程序。
但它没有按预期工作,即即使在成功完成SendInput()
后,下一个控件也没有集中注意力。
谁能帮我解决这个问题。如何专注于其他应用程序的下一个控制?
提前谢谢你。
如果您
只是发送简单的密钥,请不要使用 KEYEVENTF_UNICODE
进行dwFlags
。将 dwFlags
设置为 0 表示"按下"过渡,并将其设置为 KEYEVENTF_KEYUP
进行 KeyUp 过渡。
您忘记为V
SendInput
KeyUp 过渡,为VK_TAB
使用这种代码。
INPUT input:
input.type = INPUT_KEYBOARD;
input.ki.time = 0;
input.ki.dwExtraInfo = 0;
input.ki.wScan = 0;
input.ki.dwFlags = 0;
// Ctrl Down
input.ki.wVk = VK_CONTROL;
SendInput( 1, &input, sizeof( INPUT ) );
// V Down
input.ki.wVk = 0x56;
SendInput( 1, &input, sizeof( INPUT ) );
// V Up
input.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput( 1, &input, sizeof( INPUT ) );
// Ctrl Up
input.ki.wVk = VK_CONTROL;
SendInput( 1, &input, sizeof( INPUT ) );
// Tab Down
input.ki.wVk = VK_TAB;
input.ki.dwFlags = 0;
SendInput( 1, &input, sizeof( INPUT ) );
// Tab Up
input.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput( 1, &input, sizeof( INPUT ) );
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- 使用 SendInput 或 mouse_event 不适用于 clock()?
- C++中的memset函数工作不正常
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- VK_TAB在我的 c++ 程序中无法在 SendInput() 中工作