AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Application.Terminate; ...

Ein Thema von daredd · begonnen am 14. Mär 2008 · letzter Beitrag vom 16. Mär 2008
Antwort Antwort
Seite 1 von 2  1 2      
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#1

Probleme mit Application.Terminate; ...

  Alt 14. Mär 2008, 15:33
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.

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?
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Probleme mit Application.Terminate; ...

  Alt 14. Mär 2008, 15:35
Was genau macht ExecuteProgramm()?
Markus Kinzler
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#3

Re: Probleme mit Application.Terminate; ...

  Alt 14. Mär 2008, 15:43
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!
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Probleme mit Application.Terminate; ...

  Alt 14. Mär 2008, 15:46
Du hänst das Programm auch an den handle deines Programmes
Markus Kinzler
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#5

Re: Probleme mit Application.Terminate; ...

  Alt 14. Mär 2008, 15:49
Ok, meinste du die stelle bei:

Wnd := Application.Handle;

????

Soll ich stattdessen was anderes hinschreiben? oder mach ich einfach die Zeile weg?
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Probleme mit Application.Terminate; ...

  Alt 14. Mär 2008, 15:53
http://msdn2.microsoft.com/en-us/library/bb762154.aspx
http://msdn2.microsoft.com/en-us/library/bb759784(VS.85).aspx
Markus Kinzler
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#7

Re: Probleme mit Application.Terminate; ...

  Alt 14. Mär 2008, 17:06
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.

---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Probleme mit Application.Terminate; ...

  Alt 14. Mär 2008, 17:19
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.
Uwe
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#9

Re: Probleme mit Application.Terminate; ...

  Alt 14. Mär 2008, 18:04
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%.
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Probleme mit Application.Terminate; ...

  Alt 14. Mär 2008, 18:13
Ein Close der MainForm wäre zumindest nicht so rüde
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 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