Hallo
DP,
ich habe ein Programm, bei dem ich einen Mehrfachstart verhindern möchte. Bei DT hab ich folgenden Tipp gefunden:
http://www.delphi-treff.de/tipps/sys...rt-verhindern/
Also in mein Projektfile eingefügt, dass sieht nun so aus:
Delphi-Quellcode:
program Project1;
uses
mutex in '
mutex.pas',
//Hier wird das Mutex-Objekt erstellt.
Forms,
Unit1
in '
Unit1.pas'
{Form1},
Unit2
in '
Unit2.pas'
{Form2},
Unit3
in '
Unit3.pas'
{Form3},
Unit4
in '
Unit4.pas'
{AboutBox},
Unit5
in '
Unit5.pas'
{Form5},
Unit6
in '
Unit6.pas'
{Form6};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TAboutBox, AboutBox);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm6, Form6);
Application.Run;
end.
Und die
mutex.pas sieht so aus:
Delphi-Quellcode:
unit mutex;
interface
implementation
uses
Windows, Dialogs;
var
mHandle: THandle;
initialization
//Der Name für die Mutex muss natürlich angepasst werden
mHandle := CreateMutex(
nil, True, PChar('
Meine Caption'));
if GetLastError = ERROR_ALREADY_EXISTS
then
//Die Bedingung trifft zu, wenn die Mutex schon existiert.
//Dies ist der Fall, wenn das Programm bereits gestartet
//wurde.
ShowMessage('
Anwendung läuft bereits!');
Halt;
finalization
if mHandle <> 0
then
CloseHandle(mHandle);
end.
So, nun warum poste ich das alles? Ganz einfach weil es nicht funktioniert. Möchte ich nun meine Projekt starten (F9), dann sehe ich, wie der Compiler arbeitet und dann wird das Programm wieder beendet. Die ShowMessage() wird jedoch nicht ausgeführt. Kommentiere ich jetzt aber die
mutex.pas aus, dann startet mein Programm wie gewohnt.
Vielleicht kann mir jemand helfen. Danke schonmal.