Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Auf Eigenschaften eines Objektes zugreifen mit ObjektHandle (https://www.delphipraxis.net/121869-auf-eigenschaften-eines-objektes-zugreifen-mit-objekthandle.html)

SimStar001 6. Okt 2008 10:26


Auf Eigenschaften eines Objektes zugreifen mit ObjektHandle
 
Hallo, ich möchte gerne auf die Eigenschaften eines fremden Objektes in einer fremden anwendung zugreifen.


Es sind bekannt:
- Handle des Objektes:
- Classname des Ojektes: in meinem Fall ein Edit und ich will den Text auslesen



wie mache ich das!?

Luckie 6. Okt 2008 10:47

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan
 
Auf was für Eigenschaften willst du zugreifen und um was für ein Objekt handelt es sich?

SimStar001 6. Okt 2008 10:50

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan
 
Das Objekt ist ein Edit, und ich möchte gern den Text der darin steht auslesen.

DeddyH 6. Okt 2008 10:52

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan
 
Hast Du es mal mit WM_GETTEXTLENGTH und WM_GETTEXT versucht?

Luckie 6. Okt 2008 11:20

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan
 
Zitat:

Zitat von SimStar001
Das Objekt ist ein Edit, und ich möchte gern den Text der darin steht auslesen.

Hmpf, warum sagst du das nicht gleich? Dann hätte man dir sofort die richtigen Suchbegriffe, siehe DeddyH, geben können.

Roachford 6. Okt 2008 11:49

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan
 
Zitat:

Zitat von Luckie
Hmpf, warum sagst du das nicht gleich? Dann hätte man dir sofort die richtigen Suchbegriffe, siehe DeddyH, geben können.

Zitat:

Zitat von SimStar001
- Classname des Ojektes: in meinem Fall ein Edit und ich will den Text auslesen

Was war daran im ersten Beitrag unverständlich, Meister?

Luckie 6. Okt 2008 12:07

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan
 
Hm, das mit dem Edit muss ich überlesen haben. :gruebel: sorry.

LokutusvB 10. Aug 2009 08:42

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan
 
Entweder suche ich immer nach falschen Stichworten, aber im Netz konnte ich bisher so gut weie keine Informationen über das Auslesen von Eigenschaften externer Anwendungen finden. Gibt es da irgendwo ein Art Walkthrough bzw. Anleitung?

Bei mir ist es ähnlich. Ich habe das Handle einer von mit gestarteten externen Anwendung. Von dieser Anwendung müßte ich jetzt die Fenstereigenschaften auselsen können, ist es minimiert, maximiert, deaktiviert, unsichtbar etc... Wie stellt man so etwas an?

toms 10. Aug 2009 08:45

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan
 
Hallo

Hier findest du alles

LokutusvB 10. Aug 2009 08:47

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan
 
Hallo,

danke, das werde ich mir gleich mal anschauen.

LokutusvB 10. Aug 2009 10:09

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan
 
Wahrscheinlich liegt es am Montag Morgen, daß ich noch nicht wieder klar denken kann.

Ich habe jetzt die Funktion GetWindowLong entdeckt, diese liefert mir laut Erklärung Informationen über ein Fenster, so auch den Style.

Allerdings ist mir nicht so ganz klar, wie ich aus dem Int-Rückgabewert was herauslesen soll. Schaue ich bei MSDN nach Window Styles, wird doch auch nichts weiter erklärt, nur alles Mögliche gelistet. Wie kann ich aus diesem Int-Wert Rückschlüsse auf die Fenstereigenschaften ziehen? Gibt es irgendwo eine Tabelle wo die ganzen Werte drinn stehen? Google nach GWL_STYLE brachte mich nicht wirklich weiter.

Man findet die GetWindowLog-Funktion immer nur in Verbindung mit SetWindowLog, wo der Wert nur über Get Ausgelesen wird, weil die Set den Wert wieder braucht. kennt sich damit denn so gar niemand aus?

Zusatz:
Wie kann es sein, das IsWindowVisible(hwnd) False zurückgibt, obwohl ich das Fenster direkt vor mir auf dem Bildschirm sehe? Das Handle scheint zu stimmen, mit SetForegroundWindow(hwnd) setzt es mir genau dieses Fenster wieder in den Vordergrund.

Zusatz 2:
jetzt verstehe ich die Welt nicht mehr, selbst (GetWindowLong(hwnd, GWL_STYLE) and WS_VISIBLE <> 0) ergibt False, obwohl ich das Fenster sehe. Das passiert, wenn das Fenster der externen Anwendung erstmals Visible False hat. Selbst wenn es dann wieder sichtbar ist, weil die 2. externe Anwendung, die eben die Anwendung gestartet hat wieder beendet ist, gibt mir WS_VISIBLE False zurück. Aber ich sehe das Fenster doch.

Guido Eisenbeis 14. Aug 2009 05:34

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan
 
Die Funktionen die du brauchst sind IsWindowVisible und GetWindowPlacement.

GetWindowPlacement hat in der WINDOWPLACEMENT-Struktur den Parameter showCmd. Damit kannst du ermitteln, ob das Fenster normal = 1, minimiert = 2 oder maximiert = 3 ist.

Mit der von dir schon genannten Funktion IsWindowVisible kannst du ermitteln, ob das Fenster sichtbar = 1 oder unsichtbar = 0 ist.

Zitat:

Zitat von LokutusvB
Wie kann es sein, das IsWindowVisible(hwnd) False zurückgibt, obwohl ich das Fenster direkt vor mir auf dem Bildschirm sehe? Das Handle scheint zu stimmen, mit SetForegroundWindow(hwnd) setzt es mir genau dieses Fenster wieder in den Vordergrund.

Das Problem kenne ich von vor laaaanger, laaaanger Zeit. Dafür gibt es einige Gründe. Alle laufen darauf hinaus, dass das Handle nicht wirklich stimmt. Zum Beispiel hatte ich das Handle von einem weiteren Fenster des fremden Programms erwischt, das unsichtbar im Hintergrund läuft, oder ich hatte das Taskbar-Fenster erwischt, oder zwar schon das richtige Fenster, aber dann nicht das Parentfenster sondern ein Control oder einen Container auf dem Fenster, oder ...

Probier den Code vielleicht erstmal an einem kontrollierbarem Programm aus. Erstell dir zum Beispiel schnell mal selbst ein einfaches Testprogramm mit einem Fester, einem Button, einem Edit-Control, ...

Guido.

Edit:
Hätte ich beinahe vergessen: Wenn du zum Beispiel das Handle des Taskbar-Fensterchens oder eines unsichtbaren Hilfsfensters (des fremden Programms) erwischt hast, kommt mit SetForegroundWindow(hwnd) natürlich auch das eigentliche Fenster in den Vordergrund.

LokutusvB 14. Aug 2009 10:41

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan
 
Ja, so ist es dann auch gewesen. Diese Windows-Fenster-Handle sind mit mehr als nur mit Vorsicht zu geniesen.

Danke für die Hinweise!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 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-2025 by Thomas Breitkreuz