Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Komponenten-Aufschriften auslesbar? (https://www.delphipraxis.net/62364-komponenten-aufschriften-auslesbar.html)

MatthiasR 3. Feb 2006 14:36


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 :) .

shmia 3. Feb 2006 16:25

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.

MatthiasR 3. Feb 2006 17:36

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.

shmia 3. Feb 2006 17:50

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;

igel457 3. Feb 2006 17:54

Re: Komponenten-Aufschriften auslesbar?
 
und an die mausposition kommt man mit:
Delphi-Quellcode:
  getcursorpos(mp);

MatthiasR 3. Feb 2006 18:02

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.

Der_Unwissende 3. Feb 2006 18:12

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

Christian Seehase 3. Feb 2006 19:54

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