AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exe in Exe einbinden

Ein Thema von AJ_Oldendorf · begonnen am 25. Nov 2009 · letzter Beitrag vom 26. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#1

Exe in Exe einbinden

  Alt 25. Nov 2009, 15:32
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:
  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;
Habt ihr da eine Idee?
Viele Grüße
Alex
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Exe in Exe einbinden

  Alt 25. Nov 2009, 15:48
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#3

Re: Exe in Exe einbinden

  Alt 25. Nov 2009, 15:52
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Exe in Exe einbinden

  Alt 25. Nov 2009, 15:56
Zitat von AJ_Oldendorf:
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.
Es schaut so aus, der Ansatz ist aber ein anderer.

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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#5

Re: Exe in Exe einbinden

  Alt 25. Nov 2009, 15:58
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?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Exe in Exe einbinden

  Alt 25. Nov 2009, 16:02
Zitat von AJ_Oldendorf:
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!?
Wenn du keinen Hook willst musst du das über einen Timer machen. Ist jedoch eine Krückenlösung da das Fenster u.U. schon sichtbar ist bevor du es dir schnappst.

Zitat von AJ_Oldendorf:
PS: Wie macht VMWare das denn? Weißt du da näheres drüber?
Wikipedia weis da viel drüber
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#7

Re: Exe in Exe einbinden

  Alt 25. Nov 2009, 16:04
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#8

Re: Exe in Exe einbinden

  Alt 25. Nov 2009, 16:18
VMWare simuliert einen ganzen Computer, wobei die Daten der simulierten Grafikkarte in dem Tab dargestellt werden.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#9

Re: Exe in Exe einbinden

  Alt 25. Nov 2009, 19:46
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
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#10

Re: Exe in Exe einbinden

  Alt 26. Nov 2009, 08:08
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz