AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Auf Eigenschaften eines Objektes zugreifen mit ObjektHandle
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Eigenschaften eines Objektes zugreifen mit ObjektHandle

Ein Thema von SimStar001 · begonnen am 6. Okt 2008 · letzter Beitrag vom 14. Aug 2009
Antwort Antwort
Seite 2 von 2     12   
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#11

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan

  Alt 10. Aug 2009, 10:09
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.
MFG
LokutusvB
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#12

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan

  Alt 14. Aug 2009, 05:34
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 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.
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#13

Re: Auf Eigenschaften eines Objektes zugreifen mit ObjektHan

  Alt 14. Aug 2009, 10:41
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!
MFG
LokutusvB
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:08 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