AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Edit-Feld aus einem anderen Programm auslesen?
Thema durchsuchen
Ansicht
Themen-Optionen

Edit-Feld aus einem anderen Programm auslesen?

Ein Thema von X-Dragon · begonnen am 19. Mär 2003 · letzter Beitrag vom 25. Mär 2003
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#1

Edit-Feld aus einem anderen Programm auslesen?

  Alt 19. Mär 2003, 10:53
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 .
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#2
  Alt 19. Mär 2003, 10:56
Schau dir mal die Messages WM_GETTEXTLENGTH und WM_GETTEXT an..
Manuel Pöter
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#3
  Alt 19. Mär 2003, 11:28
Zitat von Motzi:
Schau dir mal die Messages WM_GETTEXTLENGTH und WM_GETTEXT an..
Das ist das einzige was die Hilfe dazu sagt und das hilft mir leider nicht weiter
Zitat:
Die Methode DefaultHandler ermöglicht die Bearbeitung aller Botschaften, für die keine spezielle Behandlungsroutine vorhanden sind.

procedure DefaultHandler(var Message); override;

Beschreibung

Durch Überschreiben von DefaultHandler können Sie die Standardbearbeitung von Botschaften erweitern. DefaultHandler ist für Komponentenentwicklern die letzte Möglichkeit, Botschaften an Steuerelemente zu behandeln. Die von WndProc referenzierte Methode stellt die erste Gelegenheit dar. Zusätzliche Möglichkeiten werden von Methoden wie Click bereitgestellt.

DefaultHandler behandelt die Windows-Botschaften, die sich auf den Text des Steuerelements beziehen: nämlich WM_GETTEXT, WM_SETTEXT und WM_GETTEXTLENGTH.
Und bei den "Lösungen" hier im Forum heißt es meistens "danke hat sch erledigt" aber wie es jetzt wirklich funktioniert hab ich nirgenswo gefunden .
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 19. Mär 2003, 11:32
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: www.msdn.microsoft.com
Zu WM_GETTEXT findest du auch was auf meiner Seite.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#5

.. ein paar dutzend Webseiten später ...

  Alt 20. Mär 2003, 13:05
Delphi-Quellcode:
var
  ExEdit,
  Fenster : hwnd;
begin
  Fenster := FindWindowEx(0,0,nil,PChar('Test-Fenster'));
  ExEdit := FindWindowEx(Fenster,0,nil,PChar('Test-Editfeld'));
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?
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#6
  Alt 21. Mär 2003, 11:49
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7
  Alt 21. Mär 2003, 12:02
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"?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#8
  Alt 21. Mär 2003, 12:07
Zitat von Luckie:
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"?
Das ist die Bezeichnung des Edit-Feldes, ist doch richtig so oder? (habs vorläufig umbenannt um es übersichtlicher zu machen)

Wann sollte denn Edit bzw wann TEdit als Klasse angegeben werden?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9
  Alt 21. Mär 2003, 12:21
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#10
  Alt 21. Mär 2003, 12:42
Zitat von Luckie:
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.
Ah danke, dann kann das natürlich nicht funktonieren. Aber was macht das eigentlich für ein Sinn dort den Text des Edit-Feldes einzutragen, da dies ja selten ein fester Wert ist?

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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz