Registriert seit: 8. Feb 2005
51 Beiträge
Delphi 2009 Professional
|
Re: Sich selbst neu starten?
27. Jul 2006, 12: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) = '-r' then 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.
|
|
Zitat
|