AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komponenten-Aufschriften auslesbar?

Offene Frage von "MatthiasR"
Ein Thema von MatthiasR · begonnen am 3. Feb 2006 · letzter Beitrag vom 3. Feb 2006
Antwort Antwort
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#1

Komponenten-Aufschriften auslesbar?

  Alt 3. Feb 2006, 14:36
Ist es allgemein möglich, die Aufschriften von visuellen Komponenten (bspw. die eines Buttons) eines Delphi-Programmes (oder auch ganz allgemein) mit einem anderen Delphi-Programm auszulesen? Ich kanns mir zwar schwer vorstellen wie das gehen sollte, aber fragen kann man ja mal .
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Komponenten-Aufschriften auslesbar?

  Alt 3. Feb 2006, 16:25
Das geht nur für Controls, die ein (window-)Handle haben.
Bei Delphi ist das Programm WinSight32 dabei.
Es zeigt, welche Infos ausgelesen werden können.
Wenn du uns dann noch verrätst, was du eigentlich erreichen möchtest, können wir dir sagen,
ob und wie man über die Handles dran kommt.
Andreas
  Mit Zitat antworten Zitat
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#3

Re: Komponenten-Aufschriften auslesbar?

  Alt 3. Feb 2006, 17:36
Letztendlich möchte ich schlicht zur Laufzeit eines Programms an die Caption der Komponente kommen, die angeklickt wurde oder (noch besser) über der gerade der Mauszeiger steht. Diese Caption wird dann weiterverarbeitet.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Komponenten-Aufschriften auslesbar?

  Alt 3. Feb 2006, 17:50
Wie man an die aktuelle Mausposition rankommt, kann ich dir im Moment nicht sagen,
deshalb die feste Position 10/10.
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
   h : HWND;
   s : string;
   mp : TPoint;
begin
   mp := Point(10, 10); // Mausposition

   h := WindowFromPoint(mp); // hole Fensterhandle

   setLength(s, 200);
   GetWindowText(h, PChar(s), 200); // hole Text zum Handle

   Caption := s; // Als Caption anzeigen
end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Komponenten-Aufschriften auslesbar?

  Alt 3. Feb 2006, 17:54
und an die mausposition kommt man mit:
  getcursorpos(mp);
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#6

Re: Komponenten-Aufschriften auslesbar?

  Alt 3. Feb 2006, 18:02
Ich glaube, ihr habt mich nicht richtig verstanden. Wenn ich auf irgendnem Programm nen "OK"-Button angeklickt habe, dann soll mir mein Programm quasi "OK" zurückgeben. Eben die Aufschrift der Komponente (wie Button), die angeklickt wurde. Nicht die Aufschrift des Fensters. Oder noch besser: ich fahre mit meinem Mauszeiger nur über den Button, drücke eine bestimmte Tastenkombination, und mein Programm liest mir dann die Aufschrift des Buttons aus.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#7

Re: Komponenten-Aufschriften auslesbar?

  Alt 3. Feb 2006, 18:12
Hi,
dann hast du unter Windows ein tierisches Problem, das BS macht seinem Namen einfach mal alle Ehre und so ziemlich alles was du unter Windows siehst ist eigentlich nur ein Fenster. Fängt schon mit jedem Button an, den du siehst... (auch wenn nicht überall Fenster dran steht).

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Komponenten-Aufschriften auslesbar?

  Alt 3. Feb 2006, 19:54
Moin Infect,

mal angenommen, das worüber sich der Cursor (die Maus) befindet ist ein Fenster (z.B. auch Button), könntest Du Dich mit Hilfe von GetWindowLong und GWL_HWNDPARENT "hochhangeln" bis die Funktion 0 zurückgibt.
Das letzte gültige Handle müsste dann das des übergeordneten Fensters für den, z.B., Button sein, dass muss aber nicht zwingend stimmen. (Bei einem Delphi-Programm ist dass dann z.B., dass des unsichtbaren TApplication-Fensters)
Anschliessend könntest Du dann, mit SendMessage und WM_GETTEXT die Caption auslesen.

Erschwerend kommt hinzu: Nicht alles, was wie ein bekanntes Windows-Control aussieht, ist auch eines. (z.B. TLabel sieht aus wie ein STATIC, hat aber kein Handle)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:48 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