![]() |
Sendmessage an Eingabefeld
Hallo,
ich möchte an ein anderes Nichtdelphiprogramm, welches aus einem Eingabefeld und 2 Buttoms besteht, einen Text in das Einabefeld senden und anschließend einen der beiden Button automatisiert betätigen. Mein nachfolgender Ansatz bewirkt lediglich, das ich den Titel des Fensters der anderen Anwendung "umschreibe".
Delphi-Quellcode:
Kann mir jemand auf die Sprünge helfen, wie ich das Eingabefeld erreiche.TheWindowHandle := FindAWindow('fremdesprogramm.exe:', ''); windows.SendMessage(TheWindowHandle, WM_Settext,0,Integer(PCHAR('test'))); Wäre auch über den Hinweis auf eine diesbezügliche verständliche Doku sehr dankbar. |
AW: Sendmessage an Eingabefeld
Such doch einmal nach WinSpy, das Tool kann Dir sogar Code generieren, mit dem Du das Handle des Eingabefelds ermitteln kannst (sofern es sich um Standard-Controls mit Windows-Handle handelt, bei Java-Programmen etc. wird es wohl nicht funktionieren).
|
AW: Sendmessage an Eingabefeld
Genau, dein Code macht das, was du da tust.
Fenster suchen und bei ihm den Text (Titel) ändern. Mit FindWindowEx in dem Fenster weitersuchen, nach Edit und Button. Falls es ein "Dialog" ist, dann kann man auch mit dem Fensterhandle (Dialoghandle) und der Komponenten-ID via SetDlgItemText (statt SetWindowText). |
AW: Sendmessage an Eingabefeld
Ich habe mir Winspy besorgt und darin das Edit-Fenster ausgewählt sowie mittels des integrierten Code-Generatos den Quelltext erzeugt.
Wenn ich diesen ausführe, blinkt das Edit kurz auf, es wird jedoch nichts an das Edit gesandt. Es wird jedoch das Eingabefenster aktiviert, wenn ich
Delphi-Quellcode:
setze .
SetForeGroundWindow(wndMain);
Hier der von Winspy generierte Programmcode:
Delphi-Quellcode:
Mir fehlt im Grunde der Befehl, um Text an das "wndChild" zu senden.
var
wndMain, wndChild: HWND; begin wndMain := FindWindow('#32770','Eingabe'); if wndMain <> 0 then begin wndChild := FindWindowEx(wndMain, 0, 'Edit', nil); if wndChild <> 0 then begin ShowMessage('Window Handle: ' + IntToStr(wndChild)); FlashControl(wndChild); // internal function end; end; SetForeGroundWindow(wndMain); end. Der Befehl
Delphi-Quellcode:
macht nichts...
SetWinText(wndChild, 'test');
|
AW: Sendmessage an Eingabefeld
Was ist FindAWindow und SetWinText, bzw. wo kommt das her?
![]() ![]() ![]() ![]() Zitat:
Hier, beim SendMessage/PostMessage, nimmt man für sowas die richtigen Typen, wie
Delphi-Quellcode:
(ja genau, jenen Typen, mit welchem dieser Parameter im SendMessage deklariert wurde)
LPARAM(PChar('test'))
oder notfalls z.B.
Delphi-Quellcode:
IntPtr(PChar('test'))
Delphi-Quellcode:
NativeInt(PChar('test'))
|
AW: Sendmessage an Eingabefeld
Hallo,
das Zitat:
Vielen Dank für eure fachkundige Unterstützung. Es läuft... :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz