Вы создаете именованный Mutex при запуске приложения. Проверьте GetLastError
, чтобы увидеть, запущен ли другой экземпляр.
Поместите этот код сразу после «начала» в вашем файле DPR. Замените GUID на свой собственный. Когда мне нужна текстовая константа, которая вряд ли будет использоваться для чего-то еще, я обычно просто нажимаю Ctrl + G , чтобы получить GUID!
if CreateMutex(nil, True, '6EACD0BF-F3E0-44D9-91E7-47467B5A2B6A') = 0 then
RaiseLastOSError;
if GetLastError = ERROR_ALREADY_EXISTS then
Exit;
Может показаться, что код пропускает дескриптор, потому что он не сохраняет возвращаемое значение CreateMutex
. Это не. Windows автоматически освободит дескриптор, когда наше приложение будет закрыто, и это нас устраивает.