S
Ok, so funktioniert es (jetzt auch ohne Unsitte ).
SetForegroundWindow(notepadHWND); hat gefehlt.
Vielen Dank euch beiden!!!
Aber wichtig:
SetForegroundWindow(notepadHWND); muss vor AttachThreadInput(notePadThreadId,simulatorThreadId,TRUE) stehen
Übrigens fünktioniert es auch ohne SetFocus(notepadHWND); - aber erst einen Zyklus später, also beim zweiten Durchgang der while()-Schleife.
void simuliereTaste(HWND notepadHWND,HWND smulatorHWND)
{
HANDLE h = (HANDLE)p;
DWORD notePadProcessId;
DWORD simulatorProcessId;
DWORD notePadThreadId;
DWORD simulatorThreadId;
while(1)
{
Sleep(2000);
notePadThreadId = GetWindowThreadProcessId(notepadHWND,¬ePadProcessId);
simulatorThreadId = GetWindowThreadProcessId(smulatorHWND,&simulatorProcessId);
SetForegroundWindow(notepadHWND);
AttachThreadInput(notePadThreadId,simulatorThreadId,TRUE)
SetFocus(notepadHWND);
keybd_event(VK_LSHIFT,0,0,0);
keybd_event('A',0,0,0);
keybd_event('A',0, KEYEVENTF_KEYUP,0);
keybd_event(VK_LSHIFT,0, KEYEVENTF_KEYUP,0);
AttachThreadInput(notePadThreadId,simulatorThreadId,FALSE);
}
}
Trotzdem werde ich das Gefühl nicht los, auf der falschen Fährte zu sein.
Gehe ich richtig in der Annahme, dass es keine andere Möglichkeit gibt,
einem (fremden) Programm Maus- und Tastatur-Inputs zu senden - ohne dass es sich im Vordergrund befindet?
Desweiteren würde ich gerne die Pixel des Empfängerprogramms auslesen.
Das ist soweit möglich, jetzt wo das Fenster im Vordergrund ist. Aber geht das auch bei minimierten Fenstern oder Fenstern, die im Hintergrund sind?
MfG