Herausfinden, ob sich ein Fenster auf dem Desktop befindet
(Visual Basic)
Hallo ihr Experten!
bei Visual Basic gibt es ja die Funktion
thx
js
Hallo ihr Experten!
bei Visual Basic gibt es ja die Funktion
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
auf jeden Fall kann man das Fenster damit "woanders hinsetzen", also z.b. in ein bild bzw. alles was eine Hwnd hat. Dann gibt es noch die FunktionPrivate Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
mit der man das Übergeordnete Fenster rausfinden kann. doch irgendwie klappt es bei mir nicht, damit herauszufinden, ob das fenster auf dem Desktop liegt. Ich bekomme immer nur den Rückgabewert 0. Kann mir jemand helfen?thx
js
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 40285
Url: https://administrator.de/contentid/40285
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo JS,
die von Dir genannten Funktionen haben nichts mit der Sichtbarkeit zu tun. Bei dem Hauptfenster einer Anwendung wird Dir GetParent stets anzeigen, dass es keinen Parent mehr hat. (Er könnte aber sehr wohl noch einen Owner haben.) Durch Abfragen des WS_VISIBLE-Flags erfährst Du, was Du suchst. Das geht natürlich mit GetWindowLong. Für die Abfrage dieses Flags gibt es aber sogar eine eigene Funktion, und zwar IsWindowVisible. Falls Dir die Deklaration fehlen sollte, besorg Dir bitte den ApiViewer.
die von Dir genannten Funktionen haben nichts mit der Sichtbarkeit zu tun. Bei dem Hauptfenster einer Anwendung wird Dir GetParent stets anzeigen, dass es keinen Parent mehr hat. (Er könnte aber sehr wohl noch einen Owner haben.) Durch Abfragen des WS_VISIBLE-Flags erfährst Du, was Du suchst. Das geht natürlich mit GetWindowLong. Für die Abfrage dieses Flags gibt es aber sogar eine eigene Funktion, und zwar IsWindowVisible. Falls Dir die Deklaration fehlen sollte, besorg Dir bitte den ApiViewer.
JS,
dann sieht es so aus, dass Du die Parent-Child-Relation nicht korrekt setzt. Aber das dürfte Dir inzwischen EnumChildWindows gezeigt haben. Der Punkt ist, dass der einfache Aufruf von SetParent allein nicht genügt, damit die neue Relation korrekt registriert wird. Du musst vorher den Fensterstil WS_CHILD via SetWindowLong setzen.
dann sieht es so aus, dass Du die Parent-Child-Relation nicht korrekt setzt. Aber das dürfte Dir inzwischen EnumChildWindows gezeigt haben. Der Punkt ist, dass der einfache Aufruf von SetParent allein nicht genügt, damit die neue Relation korrekt registriert wird. Du musst vorher den Fensterstil WS_CHILD via SetWindowLong setzen.