Einzelnen Beitrag anzeigen

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