Borland C++ Builder FAQ - Как сделать, чтобы программа не запускалась второй раз

ОГЛАВЛЕНИЕ


Как сделать, чтобы программа не запускалась второй раз

// Для чтобы программа не запускалась второй раз надо модифицировать проектный файл (в данном примере это Project1.cpp):
#include <vcl.h>
#pragma hdrstop
USERES("Project1.res");
USEFORM("Unit1.cpp", Form1);
const char *NamedMutex= "OneOnly";
HANDLE CheckInstance(const char *Name)
{
    HANDLE Mutex = CreateMutex(NULL, true,Name);
    int er = GetLastError();
    if (er) return 0;
    return Mutex;
}
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    HANDLE Mutex = CheckInstance(NamedMutex);
    if (!Mutex)
    {
        ShowMessage("Уже работает");
        ReleaseMutex(Mutex);
        return 1;
    }
    try
    {
        Application->Initialize();
        Application->CreateForm(__classid(TForm1), &Form1);
        Application->Run();
    }
    catch (Exception &exception)
    {
        Application->ShowException(&exception);
    }
    return 0;
}