Thema: Delphi Sich selbst neu starten?

Einzelnen Beitrag anzeigen

paritycheck

Registriert seit: 8. Feb 2005
51 Beiträge
 
Delphi 2009 Professional
 
#21

Re: Sich selbst neu starten?

  Alt 27. Jul 2006, 11:07
Hab es nicht weiter getestet aber vielleicht funktioniert folgendes:

Delphi-Quellcode:
program Project1;

uses
  Forms,
  Windows, Sysutils, Messages,
  Unit1 in 'Unit1.pas{Form1};

{$R *.res}

var hMutex: Cardinal;
    aHWND: THandle;

begin
  hMutex:= CreateMutex(nil, True, PChar(ExtractFilename(ParamStr(0))));
  if GetLastError() = ERROR_ALREADY_EXISTS then begin
     aHWND:= FindWindow(nil, PChar('Form1'));
     if ParamStr(1) = '-rthen begin //vielleicht doch erst überprüfen ob das Programm neu getartet werden darf.
                                      //könnte sonst unerwünschte Nebenwirkungen geben....
        if aHWND <> 0 then begin
           SendMessage(aHWND, WM_CLOSE, 0, 0);
           Sleep(1000);
        end;
     end else begin
        MessageBox(0, PChar('Programm läuft bereits.'), PChar(ExtractFilename(ParamStr(0))), mb_OK);
        Halt;
     end;
  end;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
  if hMutex <> 0 then begin
     ReleaseMutex(hMutex);
     CloseHandle(hMutex);
  end;
end.
Dann einfach via CreateProcess oder auch ShellExecute das Programm neu starten.
  Mit Zitat antworten Zitat