Hallo,
ich habe ein Programm geschrieben, welches eine Art Programmverwaltung darstellen soll. Es besteht aus mehreren veränderbaren Panels, die jeweils eine fremde oder eine selbst geschriebene Anwendung in das Panel einbinden soll. Dazu starte ich jede der Anwendungen mit CreateProcess, ermittle mit GetWindowThreadProcessID den Prozess und enumeriere dann mit EnumThreadWindows alle sichtbaren Formulare (IsWindowEnabled=True, IsWindowVisible=True, GetWindowRect>0 pixel, GetWindowText<>'') zu der jeweils gestarteten Anwendung.
Dann setze ich über SetParent das sichtbare Fenster der jeweiligen Anwendung in das Panel meiner Hauptanwendung hinein. Damit die eingebundene Anwendung vom Benutzer nicht wild im Panel hin- und herbewegt werden kann, setze ich den Fensterrahmen der eingebundenen Anwendung mit SetWindowLong durch löschen des SIZEBOX-Flags auf "keine Titelleiste". Somit sehen die eingebundenen Anwendungen aus, als wären sie Teil meiner eigenen Anwendung (keine Sorge: Ich will das auch nicht verschleiern, die Anwendungen sollen in keiner Weise manipuliert werden).
Das ganze funktioniert soweit alles ganz sauber, und ich habe schon viele Anwendungen getestet. Die in die Panels eingebundenen Anwendungen laufen wunderbar weiter, sogar Maus- und Tastaturaktivitäten werden i.d.R. gut verarbeitet.
Beende ich meine Anwendung, dann sollen alle eingebundenen Anwendungen ebenfalls beendet werden; das erreiche ich durch Senden eines WM_CLOSE an das Fensterhandle der Anwendung(en). Vorher werden die Anwendungen aber noch von dem Panel wieder entbunden (also zurück ans Desktop gehängt). Auch das funktioniert soweit sehr gut.
Es fehlen noch ein paar Dinge zum Glück, und hoffe, ihr könnt ein wenig Licht ins Dunkel bringen.
Zunächst habe ich das Problem, dass jede der eingebundenen Anwendungen weiterhin in der Taskleiste ein Icon aufweist. Das stört mich.
Ich habe aber bislang keine Möglichkeit gefunden, über einen API-Aufruf dieses Icon auszublenden, solange die Anwendung eingebunden ist. Geht das überhaupt? Leider habe ich hier im Forum zu diesem Thema nichts gefunden, was geeignet scheint.
_________________
Es gibt keine Probleme - nur Lösungen!