Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm in Panel starten (https://www.delphipraxis.net/107755-programm-panel-starten.html)

Helmi 1. Feb 2008 16:53


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?

patti 1. Feb 2008 17:01

Re: Programm in Panel starten
 
Willst du ein beliebiges Programm im Panel öffnen oder ein eigenes?

Helmi 1. Feb 2008 17:13

Re: Programm in Panel starten
 
ein beliebiges

patti 1. Feb 2008 17:17

Re: Programm in Panel starten
 
Dann kann ich dir leider nicht weiterhelfen :(

Namenloser 1. Feb 2008 17:17

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.

Helmi 1. Feb 2008 17:22

Re: Programm in Panel starten
 
ich meinte natürlich das Fenster der Anwendung

Larsi 1. Feb 2008 17:31

Re: Programm in Panel starten
 
und wo findet man so einen code?

DeddyH 1. Feb 2008 17:34

Re: Programm in Panel starten
 
Such mal nach SetParent.

Larsi 1. Feb 2008 18:36

Re: Programm in Panel starten
 
da kommen ja tausende von seiten :( gibts nicht was einfaches???

Helmi 1. Feb 2008 18:44

Re: Programm in Panel starten
 
Kann man das mittels:

Delphi-Quellcode:

ShellExecute(Application.Handle, 'open', PChar(Path), '', Nil, SW_ShowNormal);
durchführen?

Die Muhkuh 1. Feb 2008 18:47

Re: Programm in Panel starten
 
Nein.

Aber Du kannst es, wie Detlef sagte, per SetParent machen. Und wenn Du hier in der DP danach suchst, dürftest Du auch findig werden, den ich meine hier schon mal etwas davon gesehen zu haben.

DeddyH 1. Feb 2008 19:11

Re: Programm in Panel starten
 
Ist doch nicht so schwer:
Delphi-Quellcode:
aWnd := FindWindow('notepad',nil);
if aWnd <> 0 then //*grmpf*, das muss 0 heißen
  Windows.SetParent(aWnd,Panel1.Handle); //besser Windows davorschreiben
Allerdings kannst Du das Fenster dann innerhalb Deines Panels immer noch hin und herschieben.

Larsi 1. Feb 2008 19:38

Re: Programm in Panel starten
 
wass mus ich als variable für awnd einbindne?

DeddyH 1. Feb 2008 19:39

Re: Programm in Panel starten
 
grzgrmbl? Kannst Du das nochmal in Deutsch fragen?

Die Muhkuh 1. Feb 2008 19:41

Re: Programm in Panel starten
 
Ich übersetze mal:

Er sucht den Datentyp von aWnd, welcher HWND ist.

taaktaak 1. Feb 2008 19:41

Re: Programm in Panel starten
 
hihihihi

var aWnd : HWnd;

DeddyH 1. Feb 2008 19:42

Re: Programm in Panel starten
 
Mal ein Tipp: in der Hilfe unter FindWindow nachsehen, welchen Datentyp diese Funktion wohl zurückgibt.

Helmi 1. Feb 2008 19:44

Re: Programm in Panel starten
 
Danke DeddyH!
Hat funktioniert!

taaktaak 1. Feb 2008 19:56

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??

taaktaak 1. Feb 2008 20:07

Re: Programm in Panel starten
 
Jooooooooooo, war keine schlechte Idee...

Delphi-Quellcode:
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;
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...
Gruß Ralph

DeddyH 1. Feb 2008 20:51

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:

taaktaak 1. Feb 2008 20:55

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:
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;
So, nun aber Schluß mit der Spielerei!
Allen ein schönes Wochenende!
Gruß Ralph :balloon:

fLaSh11 1. Feb 2008 21:11

Re: Programm in Panel starten
 
Zitat:

Zitat von taaktaak
Delphi-Quellcode:
AND NOT

Was'n das für'n Quark?

taaktaak 1. Feb 2008 21:17

Re: Programm in Panel starten
 
Mit AND NOT werden im Quark die linksdrehenden Milchsäurebakterien gelöscht - ist doch wohl klar - oder?

DeddyH 1. Feb 2008 21:23

Re: Programm in Panel starten
 
Ist an AND NOT etwas unklar?

fLaSh11 1. Feb 2008 21:24

Re: Programm in Panel starten
 
Zitat:

Zitat von taaktaak
linksdrehenden Milchsäurebakterien gelöscht

Jo, ich dachte, AND NOT gibt immer FALSE? :gruebel:

taaktaak 1. Feb 2008 21:25

Re: Programm in Panel starten
 
Feierst du "nebenbei" etwa Karneval? hihihi

DeddyH 1. Feb 2008 21:29

Re: Programm in Panel starten
 
Zitat:

Zitat von fLaSh11
Jo, ich dachte, AND NOT gibt immer FALSE? :gruebel:...

Lesen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 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