AGB  ·  Datenschutz  ·  Impressum  







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

Restart einer App

Ein Thema von DelphiUser123 · begonnen am 28. Jul 2025 · letzter Beitrag vom 28. Jul 2025
Antwort Antwort
DelphiUser123

Registriert seit: 23. Feb 2013
48 Beiträge
 
#1

Restart einer App

  Alt Gestern, 13:58
Hallo liebes Forum.
Ich habe ein Problem mit folgendem Code:
Delphi-Quellcode:
ZeroMemory(@StartupInfo, SizeOf(StartupInfo));
StartupInfo.cb := SizeOf(StartupInfo);
ZeroMemory(@ProcessInfo, SizeOf(ProcessInfo));

if CreateProcess(nil, PChar(App_path), nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo) then
  begin
    Application.terminate;

    CloseHandle(ProcessInfo.hProcess);
    CloseHandle(ProcessInfo.hThread);
  end;
Bei meinem alten PC schließt die aktuelle App (unter App_path) und startet sich neu wie gewünscht.
Bei meinem neuen PC jedoch flackert die neu gestartete App sehr kurz auf und alles schließt sich, was es nicht soll.
Was kann man hier machen?
Vielen Dank für Antworten.

Geändert von TBx (Heute um 05:28 Uhr) Grund: Code-Tags in Delphi-Tags geändert
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.536 Beiträge
 
Delphi 12 Athens
 
#2

AW: Restart einer App

  Alt Gestern, 15:10
Gerade beim CreateProcess sollte man besser nicht das Quoting " vergessen.

Wenn die neue Anwendung wirklich startet und dann einfach verschwindet .... siehe Windows-Ereignislog
Falls nicht, dann sollte jemand (du) nicht die Fehlerbehandlung Fehlerauswertung vergessen.

Bzw. im eigenen Code noch etwas warten und MSDN-Library durchsuchenGetExitCodeProcess prüfen.


Delphi-Quellcode:
//uses Winapi.ShellAPI;
if ShellExecute(Self.Handle, nil, PChar(ParamStr(0)), nil, PChar(ExtractFilePath(ParamStr(0))), SW_NORMAL) <= 32 then
  RaiseLastOSError;
Application.Terminate;
PS: Beim CreateProcess kannst'e auch einfach MSDN-Library durchsuchenGetCommandLine anstatt ParamStr(0), bzw. Application.ExeName verwenden. (für ShellExecute muß man EXE und Params leider erst trennen)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (Gestern um 15:15 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:26 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