AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Label1.Caption einer Fremdanwendung auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Label1.Caption einer Fremdanwendung auslesen

Ein Thema von Muchacho · begonnen am 19. Dez 2009 · letzter Beitrag vom 19. Dez 2009
Antwort Antwort
Seite 1 von 2  1 2      
Muchacho

Registriert seit: 9. Okt 2009
60 Beiträge
 
Delphi 2010 Enterprise
 
#1

Label1.Caption einer Fremdanwendung auslesen

  Alt 19. Dez 2009, 11:04
Hallo,

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
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Label1.Caption einer Fremdanwendung auslesen

  Alt 19. Dez 2009, 11:55
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.
Marvin
  Mit Zitat antworten Zitat
Muchacho

Registriert seit: 9. Okt 2009
60 Beiträge
 
Delphi 2010 Enterprise
 
#3

Re: Label1.Caption einer Fremdanwendung auslesen

  Alt 19. Dez 2009, 12:06
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?

Muchacho
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: Label1.Caption einer Fremdanwendung auslesen

  Alt 19. Dez 2009, 12:15
Zitat von Muchacho:
Ich meine das geht mich Sicherheit!
Geht schon irgendwie, ist aber aufwändig: Durch Hooken von TextOut etc APIs.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Label1.Caption einer Fremdanwendung auslesen

  Alt 19. Dez 2009, 12:25
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.
Marvin
  Mit Zitat antworten Zitat
Muchacho

Registriert seit: 9. Okt 2009
60 Beiträge
 
Delphi 2010 Enterprise
 
#6

Re: Label1.Caption einer Fremdanwendung auslesen

  Alt 19. Dez 2009, 12:32
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Label1.Caption einer Fremdanwendung auslesen

  Alt 19. Dez 2009, 12:38
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Label1.Caption einer Fremdanwendung auslesen

  Alt 19. Dez 2009, 12:42
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.
Marvin
  Mit Zitat antworten Zitat
Muchacho

Registriert seit: 9. Okt 2009
60 Beiträge
 
Delphi 2010 Enterprise
 
#9

Re: Label1.Caption einer Fremdanwendung auslesen

  Alt 19. Dez 2009, 13:30
Ja ich verstehe.

Nun dann meine letzte Frage:

Kann ich TButton Caption ohne großen Aufwand auslesen?

Muchacho
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#10

Re: Label1.Caption einer Fremdanwendung auslesen

  Alt 19. Dez 2009, 13:33
Bei Google suchenWM_GETTEXT Delphi
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:35 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