Ich habe jetzt fast das ganze Forum durchsucht aber leider keinen passen Beitrag gefunden. Leider komme ich nicht auf die Lösung.
Ich kappsel ein fremdes Programm und lasse es maximiert auf meinem Eigenen anzeigen. Wenn ich jetzt aber das eigene Programm maximiere, ändert sich die Größe des fremden Programmes nicht mit. Es soll immer die Größe meines Programmes habe, wenn die fremde Anwendung maximiert ist.
Ich habe einiges probiert aber nichts hat geklappt. Hier mein Code.
Delphi-Quellcode:
...
private
{ Private-Deklarationen }
aWnd: hWnd;
//Handle auf das Window welches man einsperren möchte
...
procedure Tfrm_main.FormActivate(Sender: TObject);
var
AppName, AppExe : PAnsiChar;
begin
AppName := '
notepad';
AppExe := '
notepad.exe';
//ext. Anwendung aufrufen...
ShellExecute(0, '
open', AppExe,
nil,
nil, SW_HIDE);
// fremde Anwendung in eigene Anwendung kappseln
aWnd := FindWindow(AppName,
nil);
while aWnd = 0
do aWnd := FindWindow(AppName,
nil);
//Solange warten bis Programm gestartet wurde
Windows.SetParent(aWnd, Panel1.Handle);
// SetWindowLong(aWnd,GWL_STYLE,GetWindowLong(aWnd,GWL_STYLE) and not WS_CAPTION); // Titelleiste ausblenden
ShowWindow(aWnd, SW_MAXIMIZE);
end;
procedure Tfrm_main.FormResize(Sender: TObject);
begin
ShowWindow(aWnd,SW_MAXIMIZE);
// passiert nichts
SetWindowPos(aWnd, 0, 0, 0, frm_main.Width, frm_main.Height, SWP_SHOWWINDOW);
// ist schon fast maximiert, aber es fehlt die untere Scrollleiste.
end;
Danke im Voraus.
Sven