Fenster von Desktop in eigenes Fenster umleiten
-
Hallo Zusammen,
ich möchte gerne alle Fenster des Desktops in ein eigenes fenster "umleiten",
d.h. sie sind danach Child-Windows meines Fensters und erscheinen nun auch in
diesem und nicht mehr auf dem Desktop.Ich gehe wie folgt vor:
----------------------------In meiner eigenen Callback-Funktion EnumWindowsProc(), die von EnumWindows()
für jedes einzelne Fenster auf dem Desktop aufgerufen wird, mache ich das
jeweilige Fenster mit SetParent() zu einem Child-Window meines eigenen Fensters.
----------------------------Das Resultat:
----------------------------Die Methode funktioniert eigtl. auch ganz gut. Nur des öfteren "hängt" sich bei
mir der PC auf (Bildschirm friert ein, nicht einmal der TaskManager kommt mehr
per STRG+ALT+ENTF).Woran kann das liegen ? Habe selten sogar eine Fehlermeldung
per "Fehlerberichterstattung" (Bericht senden, nicht senden) bekommen, die mir
sagt, dass die Explorer.exe abgestürzt ist.
Nur woran liegt das ? Der Explorer läuft 90% der Zeit einwandfrei in meinem
Fenster weiter. Der Fehler tritt meistens auf, wenn ich versuche den Internet
explorer zu starten, aber auch zufallsbedingt.----------------------------
Schöne Grüße
Xzibit
-
Darf ich vorweg fragen (aus reinem Interesse
), warum Du das machen willst? Hört sich ja an, als wollte einer den Eifelturm verschieben
.Zu Deinem Problem: Hast Du das beachtet (ist denke ich klar, was gemeint ist):
MSDN zu SetParent schrieb:
Conversely, if hWndNewParent is not NULL and the window was previously a child of the desktop, you should clear the WS_POPUP style and set the WS_CHILD style before calling SetParent.
Windows 2000/XP: When you change the parent of a window, you should synchronize the UISTATE of both windows. For more information, see WM_CHANGEUISTATE and WM_UPDATEUISTATE.
Siehe: http://msdn.microsoft.com/en-us/library/ms633541.aspx
-
Darf ich vorweg fragen (aus reinem Interesse ), warum Du das machen willst? Hört sich ja an, als wollte einer den Eifelturm verschieben .
Rumbasteln

Was genaues hab' ich in dem Sinn eigtl. nicht vor. Hab's halt mal ausprobiert
(hab den Tipp auf einer Visual Basic- Webseite gefunden). Scheinbar klappt es aber
doch nicht so einwandfrei wie beschrieben...Hast Du das beachtet...
Jo, habe ich. - Leider ...

Mir gehen die Ideen so langsam auch aus, woran das liegen könnte.Grüße, Xzi-bit
-
Naja würde spontan darauf tippen, dass die Funktion SetParent dafür einfach nicht ausgelegt ist, ein Parent Prozess-übergreifend zu ändern. Sowas sollte dann zwar in der MSDN stehen, aber wahrscheinlich kam noch keiner auf so eine seltsame Idee^^.
-
Finde Deinen Post übrigens sehr übersichtlich, muss man mal explizit herausstellen
!
-
Danke.

Finde deinen letzten Post übrigens sehr emotional aufbauend

Joa... hatte irgendwie Lust, die Sache etwas klarer darzustellen, hehe.Man muss ja schließlich den Leuten auch ein wenig entgegenkommen - finde ich - wenn sie einem schon helfen.
Des muss ma auch a mal sagen, gell ...Schöne Nacht noch, ich sehe, du bist auch so'n Nachtschwärmer ^^
Xzi-bit
-
Joar, kann man so sagen^^ - hab noch an 'nem kleinen Proggy rumgepfriemelt. Dir auch ne juhte Nacht!
