我的问题是如何将快捷方式从 c++ 发送到另一个应用程序。例如,记事本打开了,我想向他们发送快捷键,比如 CTRL+P,或者更复杂的快捷键,比如 CTRL+SHIFT+HOME 或 ALT+F4,我发现很多很好的教程解释了如何发送一个键像'A'或'ALT',但我没有找到如何将它一起发送。
问问题
2729 次
3 回答
3
您可以使用SendInput()
或keybd_event()
将键发送到当前聚焦的窗口。 SendInput()
可能是更好的选择,因为它不会将键盘事件与实际键盘中的事件散布。
// send CTRL+SHIFT+HOME
INPUT input[6];
memset(input, 0, sizeof(INPUT)*6);
input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = VK_CONTROL;
input[1].type = INPUT_KEYBOARD;
input[1].ki.wVk = VK_SHIFT;
input[2].type = INPUT_KEYBOARD;
input[2].ki.wVk = VK_HOME;
input[3].type = INPUT_KEYBOARD;
input[3].ki.wVk = VK_HOME;
input[3].ki.dwFlags = KEYEVENTF_KEYUP;
input[4].type = INPUT_KEYBOARD;
input[4].ki.wVk = VK_SHIFT;
input[4].ki.dwFlags = KEYEVENTF_KEYUP;
input[5].type = INPUT_KEYBOARD;
input[5].ki.wVk = VK_CONTROL;
input[5].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(6, input, sizeof(INPUT));
于 2010-08-15T18:14:04.637 回答
0
您可以发送多个 WM_KEYDOWN,然后发送多个 WM_KEYUP,这样您就可以尝试发送 DOWN ctrl、shift、home、UP home、shift、ctrl - 这应该可以解决问题。
于 2010-08-15T17:09:49.680 回答
0
这种“组合键”在 Microsoft Windows 中通常称为 Keyborad Accelerators。MSDN 介绍页面
于 2010-08-16T11:53:46.450 回答