我想向外部應用程序發送一些按鍵,並且它工作正常,但是當我嘗試將按鍵發送到相同外部應用程序的子窗口時,出於某種原因不起作用,所以我需要幫助。假設我們想從記事本中打印剪貼板文本,並希望一步完成。代碼看起來像這樣。如何在Windows中從外部應用程序激活某個窗口?
#include <windows.h>
#include <stdio.h>
#include <iostream.h>
using namespace std;
int main(int argc, char* argv[]){
WinExec("notepad", 1);
Sleep(1000);
HWND handle = FindWindow("notepad",0); // it's handling as well
SetForegroundWindow(handle);
keybd_event(VK_CONTROL, 0, 0, 0); // simulate CTRL down
keybd_event(VkKeyScan('V'), 0, 0, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
Sleep(500);
keybd_event(VK_CONTROL, 0, 0, 0); // simulate CTRL down
keybd_event(VkKeyScan('P'), 0, 0, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); // simulate CTRL up
Sleep(1000);
HWND handle1 = FindWindow(0, "Print"); // it wann't find "Print" window
SetForegroundWindow(handle1);
keybd_event(VK_MENU, 0, 0, 0); // simulate ALT down
keybd_event(VkKeyScan('P'), 0, 0, 0);
keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
return 0;
}
但它想要發送ALT + P到「打印」窗口,爲什麼? 最終目標是讓小宏,發送到應用程序keystorkes(在任何Windows孩子或父母..) OS:WIN 7 64位
目標應用程序是記事本(如果我明白了) –
是的,但問題是如何激活「打印」窗口,這不是外部應用程序的主窗口(我無法找到激活它們的方法) c/C++ –
對不起,我的攝取速度有點慢。如果你想要做的只是打印一個文本文件,然後發送動詞'print'給ShellExecute,傳遞文本文件名作爲文件名。我有一種感覺,如果你告訴我們你總體目標會有一個相當微不足道的解決方案。假投入真的應該是最後的手段。 –