Hallo,
mit folgender
Unit stelle ich sicher, dass mein Programm nur einmal gestartet wird.
Delphi-Quellcode:
unit Startkontrolle;
interface
implementation
uses windows,Dialogs,sysutils;
var mHandle: THandle;
// Mutexhandle
Initialization
mHandle := CreateMutex(
nil,True,'
zeugnis.exe');
if GetLastError = ERROR_ALREADY_EXISTS
then
begin
showMessage('
Es läuft bereits eine Instanz des Programms');
Halt;
end;
finalization
if mHandle <> 0
then CloseHandle(mHandle)
end.
Im Programm selbst ergibt sich die Notwendigkeit, das Programm neu starten zu müssen. Hierzu verwende ich
Delphi-Quellcode:
form1.Close;
application.ProcessMessages;
ShellExecute(Application.Handle, 'open', Pchar(ParamStr(0)), nil, nil, sw_SHOWNORMAL);
Das Problem ist nun, dass beides sich nicht wirklich mag. Wenn ich neu starten lasse, läuft ja noch eine Instanz, wodurch die Startkontrolle sich beschwert und den Neustart abbricht.
Hat jemand eine Idee, wie ich das elegant lösen könnte?
Danke vorab
Opa