Kan man gøre sådan så hvis et program kører, kan det ikke åbnes flere gange på samme tid.
Jada. Det kan gøres ved hjælp af et Mutex. (API kaldet CreateMutex er hvad der skal bruges).
Function HasPrevInstance(): Boolean;
Const
cMutex = 'uid1425-demo-HasPrevInstance-unique-string:sge5ur3252637'; //unique string
Begin
//attempt to create a new mutex. Will fail if one with the name of cMutex al ready exists
CreateMutex(nil, false, cMutex);
//What is the last error?
If GetLastError = ERROR_ALREADY_EXISTS then
Begin
Result := True;
end
else
Begin
Result := False;
End;
end;
Det er lidt smart, for Mutex'et bliver automatisk frigjort når vores app lukker.
Kald HasPrevInstance for at checke om der er en instans i forvejen:
If HasPrevInstance Then
Begin
ShowMessage('Jeg kører allerede...');
Application.Terminate;
End;
Mvh,
Thomas Nielsen