![]() |
Programm in Panel starten
Hallo,
ich hab mir grad überlegt, es müsse doch möglich sein, ein externes Programm in einen Panel zu öffnen? Also das dieses Programm in einem Panel meines Programmes zu sehen ist und aus diesem Panel auch nicht raus kann? (sozusagen ist das Panel das Parent der Software) Geht das? und falls ja, wie? |
Re: Programm in Panel starten
Willst du ein beliebiges Programm im Panel öffnen oder ein eigenes?
|
Re: Programm in Panel starten
ein beliebiges
|
Re: Programm in Panel starten
Dann kann ich dir leider nicht weiterhelfen :(
|
Re: Programm in Panel starten
Ein Programm in einem Panel laufen zu lassen ist so direkt nicht möglich - aber du kannst die Fenster der Anwendung in deinem Panel laufen lassen. je nach Art der Anwendung ist das natürlich unterschiedlich kompliziert. Wenn das Programm nur ein fenster hat (wie z.B. Notepad), dürfte es recht einfach werden. Dazu gibt es hier (oder auf dsdt.info) *glaube ich* sogar einen Code.
|
Re: Programm in Panel starten
ich meinte natürlich das Fenster der Anwendung
|
Re: Programm in Panel starten
und wo findet man so einen code?
|
Re: Programm in Panel starten
Such mal nach SetParent.
|
Re: Programm in Panel starten
da kommen ja tausende von seiten :( gibts nicht was einfaches???
|
Re: Programm in Panel starten
Kann man das mittels:
Delphi-Quellcode:
durchführen?ShellExecute(Application.Handle, 'open', PChar(Path), '', Nil, SW_ShowNormal); |
Re: Programm in Panel starten
Nein.
Aber Du kannst es, wie Detlef sagte, per ![]() |
Re: Programm in Panel starten
Ist doch nicht so schwer:
Delphi-Quellcode:
Allerdings kannst Du das Fenster dann innerhalb Deines Panels immer noch hin und herschieben.
aWnd := FindWindow('notepad',nil);
if aWnd <> 0 then //*grmpf*, das muss 0 heißen Windows.SetParent(aWnd,Panel1.Handle); //besser Windows davorschreiben |
Re: Programm in Panel starten
wass mus ich als variable für awnd einbindne?
|
Re: Programm in Panel starten
grzgrmbl? Kannst Du das nochmal in Deutsch fragen?
|
Re: Programm in Panel starten
Ich übersetze mal:
Er sucht den Datentyp von aWnd, welcher HWND ist. |
Re: Programm in Panel starten
hihihihi
var aWnd : HWnd; |
Re: Programm in Panel starten
Mal ein Tipp: in der Hilfe unter FindWindow nachsehen, welchen Datentyp diese Funktion wohl zurückgibt.
|
Re: Programm in Panel starten
Danke DeddyH!
Hat funktioniert! |
Re: Programm in Panel starten
Moin, Moin.
Ich spiele mal gerade so ein bißchen mit. Nun müßte Notepad natürlich exakt in das Panel eingepasst werden (ist natürlich nur sinnvoll, wenn das Panel eine Mindestgröße hat) - ist Get/SetWindwoPlacement da der richtige Ansatz?? |
Re: Programm in Panel starten
Jooooooooooo, war keine schlechte Idee...
Delphi-Quellcode:
Ein wenig umständlich, aber dafür erst einmal ein bißchen besser nachzuvollziehen. Nun müssten natürlich noch Verschieben, Minimieren und Maximieren ausgeschaltet werden...
procedure TfoTest3.Button1Click(Sender: TObject);
var aWnd : Hwnd; WPM : TWindowPlacement; Rect : TRect; begin aWnd:=Findwindow('notepad',nil); if aWnd<>0 then begin Windows.SetParent(awnd,panel1.Handle); WPM.Length:=SizeOf(WPM); GetWindowPlacement(awnd,@WPM); Rect.Top :=0; Rect.Left :=0; Rect.Right :=Panel1.Width; Rect.Bottom:=Panel1.Height; wpm.rcNormalPosition:=Rect; SetWindowPlacement(awnd,@WPM); end; end; Gruß Ralph |
Re: Programm in Panel starten
Würde da WM_SYSCOMMAND mit SC_MAXIMIZE nicht auch schon tun? Muss ich morgen mal versuchen, heute hab ich keine Lust mehr :mrgreen:
|
Re: Programm in Panel starten
Hihihi, das ist ja eine witzige Möglichkeit
... wenn man mal so richtig groß angeben möchte. Zieht man das Panel ganz an den oberen Rand des Clientbereichs (oder verzichtet ganz darauf und nutz das Form selber) und verwendet folgenden Code, hat man in Sekunden ein beliebig komplexes Programm "gezaubert" - da man nur noch die "eigene Titelzeile" sieht, muss es ja wohl selbst programmiert sein:
Delphi-Quellcode:
So, nun aber Schluß mit der Spielerei!
procedure TfoTest3.Button1Click(Sender: TObject);
var aWnd : Hwnd; WPM : TWindowPlacement; begin // eigentlich notepad.exe im Bedarfsfall vorher noch starten! aWnd:=FindWindow('notepad',nil); if aWnd<>0 then begin Windows.SetParent(awnd,Panel1.Handle); SetWindowLong(awnd,GWL_STYLE,GetWindowLong(awnd,GWL_STYLE) AND NOT WS_CAPTION); WPM.Length:=SizeOf(WPM); GetWindowPlacement(awnd,@WPM); WPM.ShowCmd:=SW_ShowMaximized; WPM.rcNormalPosition:=Classes.Rect(0,0,Panel1.Width,Panel1.Height); SetWindowPlacement(awnd,@WPM); end; end; Allen ein schönes Wochenende! Gruß Ralph :balloon: |
Re: Programm in Panel starten
Zitat:
|
Re: Programm in Panel starten
Mit AND NOT werden im Quark die linksdrehenden Milchsäurebakterien gelöscht - ist doch wohl klar - oder?
|
Re: Programm in Panel starten
Ist an AND NOT etwas unklar?
|
Re: Programm in Panel starten
Zitat:
|
Re: Programm in Panel starten
Feierst du "nebenbei" etwa Karneval? hihihi
|
Re: Programm in Panel starten
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 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