![]() |
Exe in Exe einbinden
Hallo zusammen,
ich habe schon im Forum gesucht und tolle Beiträge gefunden zu diesem Thema. Das klappt auch alles soweit nur habe ich ein Problem, bei Anwendungen die z.B. mit SplashScreen starten usw. Wenn man nämlich Anwendungen damit "einbettet" die einen SplashScreen haben, dann ist evtl. nur dieser eingebettet und die "Hauptanwendung" danach wird nicht mehr eingebettet. Gibt es eine Möglichkeit alle Fenster dieser Exe-Datei einzubetten (egal ob SplashScreen oder weiter aufpoppende Fenster).
Delphi-Quellcode:
Habt ihr da eine Idee?
RunProcess('notepad.exe', SW_HIDE, True, @ProcID);
if ProcID > 0 then begin hOtherWin := GetProcessWindow(ProcID); if IsWindow(hOtherWin) then begin Windows.SetParent(hOtherWin, Panel1.Handle); SetWindowPos(hOtherWin, 0, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOZORDER or SWP_SHOWWINDOW); end; end; Viele Grüße Alex |
Re: Exe in Exe einbinden
Check doch noch die Window-Eigenschaften. Falls keine titelzeile/nicht veränderlich ist so wird es wohl ein Splash-Screnn sein. Mußt dann halt nach einem Delay nochmal das Hauptfenster suchen.
|
Re: Exe in Exe einbinden
Das Problem ist ja, dass es sich nicht nur bei einem SplashScreen so auswirkt.
Wenn du z.B. ein Drucker-Eigenschaftsfenster drinne hast, dann wird dieses auch nicht reingemappt. Man muss ja anscheind jedes Fenster da rein mappen, welches durch die andere Exe zusätzlich aufgerufen werden kann. Das ist ja nicht Sinn und Zweck und würde in meinem Fall auch gar nicht gehen. Im Prinzip soll es ja so ähnlich wie bei VMWare sein. Die haben Registerkarten wo einzelne Echsen (Betriebsysteme in diesem Fall sogar) laufen mit allen Fenstern und Co. in dieser einen Registerkarte. Viele Grüße Alex |
Re: Exe in Exe einbinden
Zitat:
du müsstest versuchen die WinAPI hooken damit jedes Fenster das keinen parent angiebt und normalerweise auf den Desktop landet dein Fenster als Parent bekommt. |
Re: Exe in Exe einbinden
Ich wollte wenns geht, ohne Hooks auskommen...
Hättest du dennoch ein Beispiel wie ich die ganze Zeit überprüfe, ob ein Fenster ein Parent hat und wenn nein, dass ich dieses auch mit darauf lege!? Viele Grüße Alex PS: Wie macht VMWare das denn? Weißt du da näheres drüber? |
Re: Exe in Exe einbinden
Zitat:
Zitat:
![]() |
Re: Exe in Exe einbinden
Ok danke erstmal, ich werde mal drüber nachdenken wie ich es am besten mache.
Vielleicht kommen ja noch andere Ideen :-) Viele Grüße Alex |
Re: Exe in Exe einbinden
VMWare simuliert einen ganzen Computer, wobei die Daten der simulierten Grafikkarte in dem Tab dargestellt werden.
|
Re: Exe in Exe einbinden
Ja, hier wird so einiges durcheinander gewürfelt.
Drucker(treiber) und der gleichen nutzen DLL's die Fenster enthalten können die man aufrufen oder nutzen kann. Oder geht es einfach darum Fenster anderer Applikationen "einzufangen" und diese im eigenen Programm an zu zeigen ? 1. Ich pers. rate davon ab, da dies andere Probleme mit sich bringt 2. Man nie genau weis was die andere App mit ihrem Fenster so alles anstellt 3. gibt es zu diesem Thema hier im Forum eigentlich genügend Threads |
Re: Exe in Exe einbinden
Also zur Vollständigkeit, ich habe drei Echsen programmiert (kenne daher auch alle Fenster, die darin enthalten sind -> es sind aber reichlich viele...), die auf einem Kunden-PC laufen sollen. Ich will natürlich vermeiden, dass der Kunde:
1) jede Echse einzeln starten muss per doppelklick 2) drei Taskleisteneinträge hat (für jede Echse eine) Daher die Überlegung eine "Übergeordnete" Echse zu schaffen die als Container für die anderen drei dient. Dadurch würde man sich die zwei Sachen oben sparen und es würde sogar viel übersichtlicher sein. Vielleicht könnt ihr mit diesen Infos noch etwas anfangen. Viele Grüße Alex Das VMWare einen ganzen Computer interpretiert (bzw. OS), wusste ich :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz