2010-08-15 50 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)); 
相關問題