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! 😉


Anmelden zum Antworten