Ich möchte Text im Bearbeitungsfeld programmatisch in einem anderen Programm einrichten, das eine Spiele-App ist und DirectX verwendet, aber im Fenstermodus läuft. Ich mache das:Mit SendMessage Text in ein Bearbeitungssteuerelement eingeben, das zu einem anderen Prozess gehört
HWND hWnd = FindWindow(NULL,"Game");
HWND edit = FindWindowEx(hWnd, NULL, "Edit", NULL);
SendMessage(edit, WM_CHAR, (TCHAR) 'H', 0);
SendMessage(edit, WM_CHAR, (TCHAR) 'E', 0);
SendMessage(edit, WM_CHAR, (TCHAR) 'L', 0);
SendMessage(edit, WM_CHAR, (TCHAR) 'L', 0);
SendMessage(edit, WM_CHAR, (TCHAR) 'O', 0);
dies funktioniert nicht für mich .... aber einige, wie einmal gearbeitet. Ich denke, ich habe etwas falsch verstanden, vielleicht muss es sich auf die Bearbeitungssteuerung konzentrieren, dann setze den Cursor, füge den Text ein und deaktiviere den Fokus ... Ich weiß wirklich nicht viel ... bitte rette meine Zeit und Nerven, sag mir, wie ich es machen soll arbeiten ....
ich das auch versucht, und funktioniert nicht:
SendMessage(hwnd, WM_SETTEXT, NULL, (LPARAM)"text");
Hwnd ist richtig, aber Text nicht aktualisiert wird ... es handle zu korrigieren senden, aber nicht aktualisiert .... Ich denke, ich muss mich irgendwie konzentrieren oder updaten, sobald es erfolgreich aktualisiert wurde, aber ich habe nicht realisiert, was passiert ist ... also funktionierte Code einmal, aber nicht mehr ... Warum funktionierte es einmal?
Warum verwenden Sie nicht einfach 'WM_SETTEXT', anstatt zu versuchen, die Eingabe zu fälschen? –
@ David Heffernan Ich versuchte dies, aber nicht funktioniert: SendMessage (Hwnd, WM_SETTEXT, NULL, (LPARAM) "MyText"); Ich denke, ich muss den Fokus oder andere Dinge tun, bevor ich Text setze ... aber wie? – Jigberto
Es gibt keine Fehlerprüfung bei den FindWindow-Aufrufen. Funktionieren sie? Sie müssen Debugging durchgeführt haben, ja? –