【发布时间】:2013-12-31 20:57:54
【问题描述】:
我正在处理一个项目,我使用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() 之后,下一个控件也没有获得焦点。
谁能帮我解决这个问题。 如何专注于其他应用程序的下一个控制?
提前致谢。
【问题讨论】:
-
您通过发送
WM_NEXTDLGCTL消息将焦点设置到对话框上的不同控件。