![]() |
Edit-Feld aus einem anderen Programm auslesen?
Hi Leute
ich hab ein kleines Problem (ach nee wirklich?) :) Also ich habe 2 Programme und es besteht die Möglichkeit von einem Programm das andere Programm zu starten, wobei dann auch gleich von dem neu gestarteten Programm 3 Edit-Felder aus dem vorherigen Programm ausgelesen werden. Bisher läuft das ganze allerdings eigentlich in einem Programm ab (hab auch beide Projekte in einem Verzeichnis). Das möchte ich jetzt aber endlich nicht mehr und beide als komplett einzelne Programme handhaben. Dafür müsste ich doch eigentlich nur beim Programmstart direkt kontrollieren ob das Fenster des anderen Programms geöffnet ist und dann die Werte aus den Feldern auslesen. Und jetzt die Frage wie kann man das am sinnvollsten umsetzen? Ein paar Sachen hab ich dazu zwar schon gefunden, aber bisher nur wie ich ein Knopf drücken kann oder ein andere Programm schliessen oder ähnliches. Also wenn möglich eine kurze, einfach und sichere Lösung, vielen dank schon mal im voraus :). |
Schau dir mal die Messages WM_GETTEXTLENGTH und WM_GETTEXT an..
|
Zitat:
Zitat:
|
Mit FindWindow Handle des hauptfensters holen, mit FindWindowEx handle des Edits holen und mit WM_GETTEXT den Inhalt holen.
Bei Fragen zu den Funktionen und der Message bitte hier Informieren: ![]() Zu WM_GETTEXT findest du auch was auf meiner Seite. |
.. ein paar dutzend Webseiten später ...
Delphi-Quellcode:
Da ich die Daten aus einem untergeordneten Fenster auslesen will, sollte das ja mit FindWindowEx funktionieren. Naja zumindest findet er dort was. Allerdings das Edit-Feld will er nicht finden. Wisst ihr vielleicht woran das liegen könnte?
var
ExEdit, Fenster : hwnd; begin Fenster := FindWindowEx(0,0,nil,PChar('Test-Fenster')); ExEdit := FindWindowEx(Fenster,0,nil,PChar('Test-Editfeld')); |
Das hat doch bestimmt schon mal jemand gemacht, oder bin ich der einzige der auf so eine "tolle" Idee kommt?
Da ja beide Programme von mir sind, mir also alle Bezeichnungen etc. bekannt sind, kann das doch nicht so schwer sein? Ich hab inzwischen dutzende Webseiten abgegrast, aber irgendwie nichts passendes gefunden bzw mit keiner (verständlichen) Erläuterung dabei. |
Die Parameter von FindWondowEx sind:
1. Handle vom Elternfenster. 2. Mit welchen Kindfenster die Suche beginnen soll (0: es wird beim ersten angefangen). 3. Fensterklasse des zu findeden Fensters. Sollte EDIT oder TEdit sein, jenachdem. 4. Text der im Fenster steht. Jetzt die Frage: Steht in dem zu findeden Edit der Text: "Test-Editfeld"? |
Zitat:
Wann sollte denn Edit bzw wann TEdit als Klasse angegeben werden? |
Meinst du mit Name die Eigenschaft Name vom TEdit? Der letzte Parameter ist der Text, de rim Edit drinsteht!
Muttu kucken. Ist es eine WinAPI-Anwendung ist die Fensterklasse EDIT. Wurde die Anwendung mit der VCL erstellt ist es TEdit. Mit dem Programm WindowInfo von meiner Seite kannst du die Klasse auslesen. Aber ich würde die ID nehmen (sofern eine vergeben wurde) und das Handel dann mit GetDlgItem(hParent, ID) holen. |
Zitat:
Wenn das nur so funktioniert muss ich ja schon auf die ID des Edit-Feldes zurückgreifen, um gezielt eines ansprechen zu können (sind ja mehrere in einem Fenster), oder? Werd mich wohl nochmal auf deiner Webseite umschauen :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 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