Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi [Unit für Delphi >= 2010] Eigene Anwendung neu starten (https://www.delphipraxis.net/162066-%5Bunit-fuer-delphi-%3D-2010%5D-eigene-anwendung-neu-starten.html)

Björn Ole 7. Aug 2011 17:52

AW: [Unit für Delphi >= 2010] Eigene Anwendung neu starten
 
Mit deinen 3 Zeilen mehr geht aber dein
Delphi-Quellcode:
ShellExecute(0, 'open', PWideChar(ParamStr(0)), nil, nil, SW_SHOW);
nicht mehr, weil der Mutex noch belegt ist. ;)

EWeiss 7. Aug 2011 19:35

AW: [Unit für Delphi >= 2010] Eigene Anwendung neu starten
 
Zitat:

Zitat von Björn Ole (Beitrag 1115534)
Mit deinen 3 Zeilen mehr geht aber dein
Delphi-Quellcode:
ShellExecute(0, 'open', PWideChar(ParamStr(0)), nil, nil, SW_SHOW);
nicht mehr, weil der Mutex noch belegt ist. ;)

NÖ geht immer bei mir ;)

Aber egal..

gruss

CCRDude 7. Aug 2011 21:31

AW: [Unit für Delphi >= 2010] Eigene Anwendung neu starten
 
Zitat:

Zitat von Björn Ole (Beitrag 1115393)
Zitat:

Zitat von CCRDude (Beitrag 1115064)
2. Wenn bereits eine Instanz läuft, solltest Du die Parameter an diese weitergeben. Z.B. per Named Pipe.

Gute Idee, allerdings kommen mir Named Pipes dafür etwas zu umfangreich vor. Ich hab sie noch nie benutzt, von dem was ich lese scheint es mir aber etwas Overkill zu sein. Warum übergebe ich an ShellExecute nicht einfach
Delphi-Quellcode:
CmdLine + ' restart'
. Einwände?

Vielleicht habe ich auch die Funktionalität deines Codes falsch interpretiert :)
Das wäre notwendig, wenn es darum gehen würde, daß nur eine Instanz des Programmes laufen soll. Dann müssen spätere Instanzen das an die erste weiterreichen. Wie EWeiss später vorschlägt (allerdings auch ohne dieses Weiterreichen).

Zitat:

Zitat von Björn Ole (Beitrag 1115393)
Zitat:

Zitat von CCRDude (Beitrag 1115064)
3. Für Vista und später solltest Du eine Elevate-Möglichkeit einbauen (verb "runas" statt "open").

Verstehe nicht genau, was du meinst. open reicht doch alle Rechte weiter. Mit runas springt bei mir z.B. beim Neustart die UAC an, was ja nicht immer von Nöten ist.

Als Option - Programme laufen erstmal mit geringen Rechten, stelle aber evtl. möglich Administrationoptionen nach Elevation zur Verfügung (siehe WM_CLOSE).

Björn Ole 7. Aug 2011 22:38

AW: [Unit für Delphi >= 2010] Eigene Anwendung neu starten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von EWeiss (Beitrag 1115544)
NÖ geht immer bei mir ;)

Da muss aber bei deinem Betriebssystem was ordentlich schief laufen. :shock:

Zitat:

Zitat von CCRDude (Beitrag 1115553)
Als Option - Programme laufen erstmal mit geringen Rechten, stelle aber evtl. möglich Administrationoptionen nach Elevation zur Verfügung (siehe WM_CLOSE).

Ah ok, ich glaub jetzt hab ich es verstanden. Im Anhang die neue Version, hat sich alles um einiges vereinfacht. Warum ich da vorher den Umweg über einen Thread gegangen bin... wer weiß :stupid:
Es besteht die Möglichkeit, dem Restart() einen Boolean mitzugeben, ob mit erhöhten Rechten gestartet werden soll. Programmparameter werden der neuen Instanz weitergegeben.

Folgendes hat sich bzgl. Benutzung geändert:

.dpr
Delphi-Quellcode:
if not Application.InitializeRestarter then
  Exit;
Code zum Neustarten
Delphi-Quellcode:
Application.Restart;
// oder
if not Application.Restart(bElevated) then
  ShowMessage('Fehler beim Neustarten: ' + SysErrorMessage(GetLastError));
Schade, dass ich den Eingangsposting nicht mehr ändern kann... :? Vor allem, da man die Unit jetzt auch mit älteren Versionen vor 2010 benutzen kann.

Florian Hämmerle 8. Aug 2011 00:51

AW: [Unit für Delphi >= 2010] Eigene Anwendung neu starten
 
Schreib einen Moderator an, damit er es in die Projekte-Sparte schiebt, dann kannst du dein erstes Posting immer updaten :)

Viele Grüße,
Florian


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 Uhr.
Seite 2 von 2     12   

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