![]() |
Probleme mit Application.Terminate; ...
Hallo Leutz,
ich habe ein Problem. Ich mache gerade ein kleines Programm aus dem ich mehrer andere Programme starten kann (ein Installationsmenü). Nun wenn man alle nötigen Komponenten installiert hat kann man das Programm anschließen auch aus dem Installtionsmenü starten:
Delphi-Quellcode:
Dabei wie ihr seht will ich das InstallationsMenü gleichzeitig schließen, damit man es nachher nicht manuell machem muss. :-D
procedure TForm1.ImageButton2Click(Sender: TObject);
begin CheckInstallationen; ExecuteProgramm('Programm1.exe'); Application.OnMessage := nil; Application.Minimize; Application.Terminate; end; Hier ist mein Problem, er fängt an die Anwendung Programm1.exe auszuführen aber schließt es gleich wieder mit dem InstallationsMenü. Im Taskmaneger unter Anwendung ist dann kein Programm1.exe zu sehen, aber unter Prozesse schon. Was mach ich da falsch? :?: |
Re: Probleme mit Application.Terminate; ...
Was genau macht ExecuteProgramm()?
|
Re: Probleme mit Application.Terminate; ...
Delphi-Quellcode:
Das hier!
procedure TForm1.ExecuteProgramm(const PFileName: string);
var SEInfo: TShellExecuteInfo; ExitCode: DWORD; ExecuteFile: string; begin ExecuteFile := '"' + PFileName + '"'; FillChar(SEInfo, SizeOf(SEInfo), 0); SEInfo.cbSize := SizeOf(TShellExecuteInfo); with SEInfo do begin fMask := SEE_MASK_NOCLOSEPROCESS; Wnd := Application.Handle; lpFile := PChar(ExecuteFile); nShow := SW_SHOWNORMAL; end; if ShellExecuteEx(@SEInfo) then begin repeat Application.ProcessMessages; GetExitCodeProcess(SEInfo.hProcess, ExitCode); until (ExitCode <> STILL_ACTIVE) or Application.Terminated; end else begin Application.MessageBox('Fehler beim Starten des Programms', 'Hinweis', MB_OK + MB_ICONERROR); end; end; |
Re: Probleme mit Application.Terminate; ...
Du hänst das Programm auch an den handle deines Programmes
|
Re: Probleme mit Application.Terminate; ...
Ok, meinste du die stelle bei:
Wnd := Application.Handle; ???? Soll ich stattdessen was anderes hinschreiben? oder mach ich einfach die Zeile weg? |
Re: Probleme mit Application.Terminate; ...
![]() http://msdn2.microsoft.com/en-us/library/bb759784(VS.85).aspx |
Re: Probleme mit Application.Terminate; ...
Also ich versteh das immer noch nicht ganz!
Ich mach das jetzt mit:
Delphi-Quellcode:
Aber das Handle ist immer noch dabei! Er macht jetzt Zwar mein InstallationsMenü zu Ohne dabei das Programm1.exe zu schließen. Jedoch wenn ich dann das Programm1.exe schließe ist es immer noch unter Prozesse (im Task-Manager da).
ShellExecute(Handle, nil,'Programm1.exe', nil, nil, SW_SHOW);
Application.Minimize; Application.Terminate; Also schließt er das Programm nicht komplett. :?: :?: :?: |
Re: Probleme mit Application.Terminate; ...
Hallo,
wenn ich dich richtig verstehe, willst Du mehrere Programme installieren und danach das Programm beenden. Mach eine Funktion aus Checkinstallationen; und wenn erfolgreich beendest Du es dann ganz normal und schiesse es nicht einfach ab. |
Re: Probleme mit Application.Terminate; ...
Wie soll ich das ganz normal beenden?
Application.Terminate ist doch beende das Programm, oder etwa nicht? Ich kann es ja ganz einfach beenden in dem ich oben rechts auf das rot hinterlegte X drücke. Aber ich will halt noch das wenn man alles installiert hat, das man dann auf Programm ausführen klickt und er startet das Programm und schließt dabei das InstallationsMenü. function Checkinstalltionen habe auch schon. Ich bin halt der Delphi-Sprache nicht mächtig, also nicht zu 100%. |
Re: Probleme mit Application.Terminate; ...
Ein Close der MainForm wäre zumindest nicht so rüde :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 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