Einzelnen Beitrag anzeigen

Benutzerbild von Björn Ole
Björn Ole

Registriert seit: 10. Jul 2008
166 Beiträge
 
Delphi XE Professional
 
#4

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

  Alt 6. Aug 2011, 17:28
Danke für die Vorschläge, ich arbeite mich mal durch:

Der Restarter ist ein class helper für TApplication und initialisiert sich selbst über die init-Routine der Unit.
Vom Programmcode her schöner find ich das nicht, allerdings hast du Recht, ist besser wenn man die Unit auch mit älteren Delphi Versionen benutzen kann. Ich hab es mal geändert.

Das hätte den Vorteil, das sich der "Aufwand" auf das Einbinden der Unit beschränkt
Die GUID muss allerdings immer noch irgendwo gesetzt werden, das wär ja unschön wenn man dafür in die Unit rein muss. Daher wird das Initialize wohl bleiben müssen.

1. Warum "if ParamStr(1)=" und nicht "FindCmdLineSwitch()"?
Die Funktion kannte ich noch gar nicht, danke, hab sie eingebaut.

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 CmdLine + ' restart' . Einwände?

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.

4. Auf Rechnern mit Terminal Services (also auch Fast User Switching) könntest Du Probleme haben. Gib dem Semaphor vllt. besser mal nen "Local\"-Prefix.
Ist erledigt.

Für weitere Ideen bin ich immer dankbar. Werde noch etwas testen und dann bald die aktualisierte Unit posten.
  Mit Zitat antworten Zitat