Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Label1.Caption einer Fremdanwendung auslesen (https://www.delphipraxis.net/144903-label1-caption-einer-fremdanwendung-auslesen.html)

Muchacho 19. Dez 2009 10:04


Label1.Caption einer Fremdanwendung auslesen
 
Hallo, :-D

ich kenne Application.Title einer Fremdanwendung.

Ich weiß genau wie die Komponenten auf dem Formular heißen.

Ich weiß sogar nicht nur die Namen der Klassen sonder auch die Namen der einzelnen Komponenten (z.B. TLabel, Name= Label1 / TPanel, Name = Panel1).


Wie kann ich die aktuelle Label1.Caption oder Panel1.Caption einer Fremdanwendung auslesen?


Muchacho

Wie man eine Fremdanwendung findet weiß ich bereits

implementation 19. Dez 2009 10:55

Re: Label1.Caption einer Fremdanwendung auslesen
 
Wenn du TLabel benutzt, gar nicht.
Wenn du die Caption von einer anderen Anwendung auslesen lassen willst, musst du TStaticText nehmen.
TLabel's sind quasi "nur aufgemalt".
TStaticText's sind echte Child-Windows.
Dann musst du nur das Handle des StaticText's raussuchen und dann die Caption mit GetWindowText auslesen.

Muchacho 19. Dez 2009 11:06

Re: Label1.Caption einer Fremdanwendung auslesen
 
Ich meine das geht mich Sicherheit!

Man kann in einer Fremdanwendung ein TButton finden (mit FindWindowEx).

Auf gleichem Wege kann man auch gewiss auch ein TLabel oder TPanel finden (hwnd (FindWindowEx)).

Also bleibt nur die Caption auszulesen, weiß ich aber nicht wie? :wall:

Muchacho

toms 19. Dez 2009 11:15

Re: Label1.Caption einer Fremdanwendung auslesen
 
Zitat:

Zitat von Muchacho
Ich meine das geht mich Sicherheit!

Geht schon irgendwie, ist aber aufwändig: Durch Hooken von TextOut etc APIs.

implementation 19. Dez 2009 11:25

Re: Label1.Caption einer Fremdanwendung auslesen
 
Zitat:

Zitat von Muchacho
Man kann in einer Fremdanwendung ein TButton finden (mit FindWindowEx).
Auf gleichem Wege kann man auch gewiss auch ein TLabel oder TPanel finden (hwnd (FindWindowEx)).

Nein es geht nicht auf dem gleichen Wege. Ein Button ist ein Child-Window. Ein Label ist einfach nur von der VCL aufgemalt. Das kannst du nicht über FindWindowEx finden, weil es kein Fenster ist (im Gegensatz zu TStaticText ('STATIC'), TButton ('BUTTON'), TEdit ('EDIT') usw.)

Da musst du andere Seiten aufziehen...

[EDIT]
Das siehst du schon an der Basisklasse. Alles, was von TWinControl abstammt, ist ein Fenster und alles, was von TGraphicControl abstammt nur aufgemalt.

Muchacho 19. Dez 2009 11:32

Re: Label1.Caption einer Fremdanwendung auslesen
 
Danke für Deine Antwort.

Vielleicht kann ich, wenn ich den Namen einer Variable (Public) in einer Fremdanwendung kenne

auch diese finden und auslesen?

Muchacho

himitsu 19. Dez 2009 11:38

Re: Label1.Caption einer Fremdanwendung auslesen
 
TLabel kapselt nur keine Windowskomponente, weswegen man es extern nicht abrufen kann.

Beim Abfangen TextOut und Co. müßte man dann auch irgendwie rausbekommen, wozu es gehört. (muß ja nicht von 'nem Label kommen)

Theoretisch könnte man vermutlich die TLabel-RTTI finden und könnte dann darin SetText hooken.

Oder man versucht im gesamten Speicher das Delphi-Objekt für das gewünschte Label zu finden.

[add]
Namen von Public-Properties bringen nichts, da diese nicht mit einkompiliert werden.
Heißt in der RTTI sind solche Namen nicht gespeichert und was es nicht gibt, das kann man nicht finden.

implementation 19. Dez 2009 11:42

Re: Label1.Caption einer Fremdanwendung auslesen
 
Das wäre viel Aufwand.
Du könntest es mit DDE, MMFs oder ähnlichem probieren.
Oder wie gesagt TStaticText statt TLabel verwenden.
Auch TPanel könntest du verwenden.

Muchacho 19. Dez 2009 12:30

Re: Label1.Caption einer Fremdanwendung auslesen
 
Ja ich verstehe.

Nun dann meine letzte Frage:

Kann ich TButton Caption ohne großen Aufwand auslesen?

Muchacho

toms 19. Dez 2009 12:33

Re: Label1.Caption einer Fremdanwendung auslesen
 
Bei Google suchenWM_GETTEXT Delphi


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:59 Uhr.
Seite 1 von 2  1 2      

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