![]() |
Komponenten-Aufschriften auslesbar?
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 :) .
|
Re: Komponenten-Aufschriften auslesbar?
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. |
Re: Komponenten-Aufschriften auslesbar?
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.
|
Re: Komponenten-Aufschriften auslesbar?
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; |
Re: Komponenten-Aufschriften auslesbar?
und an die mausposition kommt man mit:
Delphi-Quellcode:
getcursorpos(mp);
|
Re: Komponenten-Aufschriften auslesbar?
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.
|
Re: Komponenten-Aufschriften auslesbar?
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 |
Re: Komponenten-Aufschriften auslesbar?
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) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:32 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 by Thomas Breitkreuz