Einzelnen Beitrag anzeigen

Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

Fremdes Programm in eigenem Programm steuern in Bezug auf die Größe.

  Alt 10. Apr 2011, 21:25
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
  Mit Zitat antworten Zitat