Fremdes Anwendungsfenster in eigener Anwendung anzeigen



  • Hallo,

    kann man das Anwendungsfenster einer anderen Anwendung "kidnappen", sodass es das eigene Anwendungsfenster als Parent benutzt und quasi in einem Sandbox-Fenster läuft? Über die API Funktion SetParent() kann ich dem fremden Anwendungsfenster mein eigenes Fensterhandle als Parent setzen, allerdings steht in der MSDN, dass das eigentlich nur für Fenster innerhalb des eigenen Prozesses benutzt werden soll und damit eigentlich UB ist.
    Hintergrund ist, dass eine Art Application Center erstellt werden soll, in dessen Hauptfenster einige andere Anwendungen ausgeführt werden. Da die Anwendungen per CreateProcess() aus diesem Center gestartet werden hatte ich gehofft, dass man das Verhalten mit einem Parameter steuern kann, allerdings habe ich nichts dazu gefunden.
    Oder muss die komplette Anwendungsarchitektur auf dieses Verhalten programmiert werden und ein so einfacher Ansatz grundsätzlich nicht funktioniert?


  • Mod

    Wo steht dass, dass hier nur Fenster des eigenen Prozesses benutzt werden dürfen? Mit dieser Bedingung würde OLE-Embedding auch nicht mehr funktionieren...

    Wichtig ist, dass es sich wirklich um ein Fenster mit dem Stil WS_CHILD handelt und dass vor allem das hostende Fenster jederzeit Nachrichten des Kindfensters ohne Verzögerung bearbeitet. D.h. dass die Messageloop wirklich immer läuft...



  • Ist nicht einfach, geht aber ganz sicher. Erfordert aber gute Kenntnisse über Prozesse, Fenster, und Message-Loops. Ich denke, man braucht auch noch etwas 'Inter-Process-Communication IPC' mit geeigneten Nachrichten dazu, um die Sache rund zu machen.


Anmelden zum Antworten