AGB  ·  Datenschutz  ·  Impressum  







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

Fremde Anwendung in eigene Einbetten

Ein Thema von padavan · begonnen am 17. Apr 2005 · letzter Beitrag vom 19. Apr 2005
Antwort Antwort
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#1

Fremde Anwendung in eigene Einbetten

  Alt 17. Apr 2005, 10:38
Hallo Delphianer,

hatte schon mal den Fall, dass ich einer anderen Anwendung beim starten die Position und Größe vorschreiben wollte. Klappte auch, ABER
wie schaffe ich es, wenn ich aus meiner Anwendung heraus ein anderes starte, das es dann in meins "eingebetet ist".

Konkreter Fall, wollte meinen Player um eine FFTAnalyse erweitern und habe dazu das VU_Meter-Projekt benutzt. Habe das Programm nun so abgeändert, dass es meinen Vorstellungen entspricht.
Klar, ich könnte den Quelltext mit übernehmen und es richtig integrieren, aber ich finde es als extra Prozess sinniger, da ich schon gemerkt habe,
dass es nicht 100% Kompatibel zu jeder Soundkarte ist, wenn das Programm also abschmiert, bleibt wenigstens mein Player am Leben.

Die Frage also, kann ich ähnlich wie einen Videostream eine andere Anwendung so in meiner Einbetten, dass es so aussieht also wäre es Teil des Hauptformulars?

Danke schonmal für jeden Anregung!
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Fremde Anwendung in eigene Einbetten

  Alt 17. Apr 2005, 10:40
Ganz einfach: hol dir das Handle vom Fenster das du auf deine Form setzen willst.
Anschliessend verwendest du SetParent um das Parent-Handle zu setzen (und verwendest dafuer Panel1.Handle oder was anderes)

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Fremde Anwendung in eigene Einbetten

  Alt 17. Apr 2005, 12:45
Hallo alcaeus,

ganz einfach für den der´s drauf hat. Da kann ich mich leider noch nicht dazuzählen.


dürfte ich dich noch um ein kleines Beispiel bitten?
Wäre sehr nett.......
Grüße
Padavan
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#4

Re: Fremde Anwendung in eigene Einbetten

  Alt 17. Apr 2005, 13:12
Geht eigentlich relativ einfach:
Mit FindWindow das Fensterhandle finden, und mit SetParent das neue Parent setzen.

Delphi-Quellcode:
procedure MySetParent(TitelDerAnwendung: string; NeuesParentHandle: HWnd);
begin
  Windows.SetParent(FindWindow(nil, PChar(TitelDerAnwendung)), NeuesParentHandle);
end;
aufrufen kannst du das dann so (z.B. um ein 2. Formular auf dein erstes zu legen):
  MySetParent('Form2', Form1.Handle);
PS: Zum Thema Handle/Window Finden gibts hier in der dp einige Threads!



//Edit: Hab grad gemerkt, dass ich was vergessen hab
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

Re: Fremde Anwendung in eigene Einbetten

  Alt 17. Apr 2005, 14:41
Vielleicht ne blöde Frage, aber wird dann das Programm, welches eingebunden wurde, auch geschlossen, wenn das von padavan erstellte Programm beendet wird?!
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#6

Re: Fremde Anwendung in eigene Einbetten

  Alt 17. Apr 2005, 14:43
Zitat von s.h.a.r.k:
Vielleicht ne blöde Frage, aber wird dann das Programm, welches eingebunden wurde, auch geschlossen, wenn das von padavan erstellte Programm beendet wird?!
Probiers doch

Ich kenn mich mit der API nich aus, aber ich würde sagen, wenn es nich so ist, könnte man per SendMessage einfach WM_CLOSE an die anwendung senden

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#7

Re: Fremde Anwendung in eigene Einbetten

  Alt 17. Apr 2005, 15:15
Ich denke nicht. Man koennte aber im OnClose des Parents aber einfach das ParentHandle des eingebundenen Fensters auf 0 setzen, und fertig. Alternativ koennte man auch das originale ParentHandle speichern und beim Schliessen des eigenen Programms wiederherstellen.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Fremde Anwendung in eigene Einbetten

  Alt 19. Apr 2005, 11:46
Zitat:
Windows.SetParent(FindWindow(nil, PChar(TitelDerAnwendung)), NeuesParentHandle);
wenn ich diesen Code ausführe, verschwindet die Anwendung vom Desktop (obwohl als "stayontop" deklariert), welche ich in mein Panel ziehen will.


Modifiziert von mir sieht obiger Vorschlag übrigens so aus:

windows.SetParent(findwindow(nil,PCHar('VU Meter')),Panel_VU_Meter.Handle); irgendwie ersichtlich, was ich falsch mache?
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Fremde Anwendung in eigene Einbetten

  Alt 19. Apr 2005, 12:46
Sorry, mein Fehler.

Hatte die Fremdanwendung ein paar Zeilen obendrüber (zwar in einer anderen Prozedur) mit Setpos ins Nirvarna Positioniert.

Wusste nicht, dass die vorgeschriebene Position damit quasi bis zum beenden gültigkeit hat.

Fazit: Funzt wunderbar.

  Mit Zitat antworten Zitat
Antwort Antwort


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 02:33 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