2010-08-15 54 views
1

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

+0

你真的想给他们发一个'ALT-F4'“快捷方式”吗?或者你想发送一个'WM_CLOSE'消息吗? – MSalters 2010-08-16 11:53:55

回答

0

你可以发送一些WM_KEYDOWNs,后面跟着一些WM_KEYUPs,这样你可以尝试发送DOWN ctrl,shift,home,UP home,shift,ctrl - 这应该可以做到。

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)); 
相关问题