如何在MS Windows中用c ++中的另一个应用程序发送快捷方式?

时间:2010-08-15 17:04:21

标签: c++ windows keyboard-shortcuts handle sendinput

我的问题是如何将快捷方式从c ++发送到另一个应用程序。让我们说例如记事本是开放的,我想发送给他们快捷方式如CTRL + P,或更复杂的快捷方式,如CTRL + SHIFT + HOME,或ALT + F4,我找到很多很好的教程,解释了如何发送一个密钥比如'A'或'ALT',但我没有找到如何将它们一起发送。

3 个答案:

答案 0 :(得分: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));

答案 1 :(得分:0)

你可以发送一些WM_KEYDOWN,然后发送一些WM_KEYUP,这样你就可以尝试发送DOWN ctrl,shift,home,UP home,shift,ctrl - 这应该可以解决问题。

答案 2 :(得分:0)

这种“组合键”通常在Microsoft Windows中称为键盘加速器。 The MSDN intro page