Меню
Категории
Как жить в системе одному процессу С++.
20 марта, 2008 Программинг

Как жить в системе одному процессу С++. Данная программа позволит пресечь возможность запуска второго экземпляра программы. Тоесть, если программа уже запущена, то запустится 2 раз ей не удастся.

Функции CreateMutex() и ReleaseMutex().

Создается Mutex функцией CreateMutex():

HANDLE CreateMutex
(
LPSECURITY_ATTRIBUTES lpMutexAttributes, // атрибут безопастности
BOOL bInitialOwner, // флаг начального владельца
LPCTSTR lpName // имя объекта
);

Результатом будет дескриптор объекта mutex, если такое имя есть, то дескпритор существующего. Функция GetLastError() при вызове будет выдавать ERROR_ALREADY_EXISTS.

Для освобождения объекта нужно вызвать функцию ReleaseMutex():

BOOL ReleaseMutex
(
HANDLE hMutex // дескриптор mutex
);

При успешном выполнении вернет ненулевое значение.

Пример:

#include “stdafx.h”
#include “windows.h”

BOOL WeAreAlone (LPSTR szName)
{
HANDLE hMutex = CreateMutex (NULL, TRUE, szName);
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
CloseHandle(hMutex);
return FALSE;
}
return TRUE;
}
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
if (WeAreAlone (“qertsfhdfj”))
{
MessageBox (NULL,”WeAreAlone”,”WeAreAlone!”,MB_OK|MB_ICONERROR);
}
else
{
MessageBox (NULL,”Error”,”Error: app already running!”,MB_OK|MB_ICONERROR);
}
return 0;
}

Добавить комментарий




*