Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Probleme mit Application.Terminate; ... (https://www.delphipraxis.net/110200-probleme-mit-application-terminate%3B.html)

daredd 14. Mär 2008 15:33


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:
procedure TForm1.ImageButton2Click(Sender: TObject);
begin
CheckInstallationen;
ExecuteProgramm('Programm1.exe');
Application.OnMessage := nil;
Application.Minimize;
Application.Terminate;
end;
Dabei wie ihr seht will ich das InstallationsMenü gleichzeitig schließen, damit man es nachher nicht manuell machem muss. :-D

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

mkinzler 14. Mär 2008 15:35

Re: Probleme mit Application.Terminate; ...
 
Was genau macht ExecuteProgramm()?

daredd 14. Mär 2008 15:43

Re: Probleme mit Application.Terminate; ...
 
Delphi-Quellcode:
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;
Das hier!

mkinzler 14. Mär 2008 15:46

Re: Probleme mit Application.Terminate; ...
 
Du hänst das Programm auch an den handle deines Programmes

daredd 14. Mär 2008 15:49

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?

mkinzler 14. Mär 2008 15:53

Re: Probleme mit Application.Terminate; ...
 
http://msdn2.microsoft.com/en-us/library/bb762154.aspx
http://msdn2.microsoft.com/en-us/library/bb759784(VS.85).aspx

daredd 14. Mär 2008 17:06

Re: Probleme mit Application.Terminate; ...
 
Also ich versteh das immer noch nicht ganz!

Ich mach das jetzt mit:

Delphi-Quellcode:
ShellExecute(Handle, nil,'Programm1.exe', nil, nil, SW_SHOW);
Application.Minimize;
Application.Terminate;
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).
Also schließt er das Programm nicht komplett.

:?: :?: :?:

uwewo 14. Mär 2008 17:19

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.

daredd 14. Mär 2008 18:04

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%.

DeddyH 14. Mär 2008 18:13

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 23:55 Uhr.
Seite 1 von 2  1 2      

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