Sodala, ich hab ein bisschen getestet und das mit SendInput scheint zu funktionieren...
Von dem ganzen Post/SendMessage hab ich erstmal Abstand genommen.
Der Trick bei SendInput ist, dass man dadurch, dass man kein Ziel bei SendInput angeben kann, man erst einmal mit AttachThreadInput den eigenen Input auf das Zielprogramm richten muss.
Folgender Code funktioniert bei mir:
Code:
HWND targetHWND=0;
DWORD thisThread,otherThread;
//Ziel finden
targetHWND=FindWindowA(NULL,"Zielprogramm");
if(targetHWND==0) {MessageBoxA(0,"Can't find...","OUCH",0);}
//ThreadId für Quelle/Ziel ermitteln
thisThread=GetCurrentThreadId();
otherThread=GetWindowThreadProcessId(targetHWND,NULL);
//Verbinden....
if(!AttachThreadInput(thisThread,otherThread,true)) {
MessageBoxA(0,"Oh noes...","OUCH",0);
}
//Wir wollen ein <Return> senden
KEYBDINPUT kip;
kip.wVk = VK_RETURN;
kip.wScan = NULL;
kip.dwFlags = NULL;
kip.time = 0;
INPUT ip;
ip.type = INPUT_KEYBOARD;
ip.ki = kip;
//Folgende Zeilen machen Probleme bei Lineage, sind aber dort auch nicht unbedingt nötig
//Wenn man das ganze mit z.B. Notepad testen möchte, braucht man sie allerdings....
//SetForegroundWindow(targetHWND);
//SetFocus(targetHWND);
SendInput(1,&ip,sizeof(INPUT));
//Verbindung lösen
AttachThreadInput(thisThread,otherThread,false);
[Only registered and activated users can see links. Click Here To Register...]
Hier steht übrigens drinnen, warum man Post/Sendmessage nicht benutzen sollte um Keyboard Input zu simulieren.....