HWND - "Nur Fenster" ?
-
Ich habe einen Timer, der den HWND Handle unter dem cursor "abfragt", aber mir ist aufgefallen, dass das nicht nur fenster sind sondern jedes Steuerelement.
Ich will aber nur die Fenster haben, von denen ich den Fenstertitel, speicherort etc abfragen möchte.
Wenn ich versuche den Speicherort (FileName) einer Bildlaufleiste herrauszufinden krieg ich nen Fehler (:D, ACH WAS).Advise ?
-
Tim06TR schrieb:
dass das nicht nur fenster sind sondern jedes Steuerelement
Das ist ein elementares Grundlagenwissen bei der Windows-Programmierung:
Jedes Control (Buttons, Static, Scrollbalken, Toolbar, Statusbar, ...) IST ein Fenster!
Sie sind i.d.R. nämlich die Child-Fenster von einem größeren Parent-Fenster.Somit müßtest Du Dich in einer verketteten Fenster-Liste durchhangeln, bis Du das letzte Eltern-Fenster (Parent) erreicht hast.
Stichworte: "GetParent()" und "GetAncestor()"HTH,
Martin
-
und wie weiß ich, dass ich "da" bin ?
Ich meine, das das "Fenster" nicht die oberste Instanz ist, die ich mit GetParent erreiche;Zitat MSDN:
If the window is a child window, the return value is a handle to the parent window. If the window is a top-level window with the WS_POPUP style, the return value is a handle to the owner window.
Oder anders gefragt, wann komme ich am zweiten Satz an ?
while(GetParent(window) != GetOwner(window)) ?
Sonst lande ich immer am explorer zuletzt -.-
-
Ich selbst habe bisher noch nie eine solche Suche nach dem obersten Fenster eines fremden Prozesses gebraucht.
Da muß ich passen.Aber schau Dir mal das Programm WinSpy++ an: http://www.catch22.net/software/winspy
Es kann Dir alle Infos zum Fenster liefern, u.a. auch den Namen des Prozesses, zu dem das Childfenster gehört.
Sourcecode ist auch dabei, vielleicht findest Du dort eine Lösung für Dich?Martin
-
Hey das prog ist gut das kann ich sehr gut gebrauchen
