CODE:#define MUTEX_ALL_ACCESS 0x1F0001
external(INT, "IsUserAnAdmin", "IsUserAnAdmin", "Shell32.dll");
external(INT, "CreateMutex", "CreateMutexA", "Kernel32.dll");
external(INT, "OpenMutex", "OpenMutexA", "Kernel32.dll");
external(INT, "ReleaseMutex", "ReleaseMutex", "Kernel32.dll");
external(INT, "CloseHandle", "CloseHandle", "Kernel32.dll");
if(IsUserAnAdmin()==0)
{
messagebox("Запускать программу нужно от админстратора");
close();
}
int my_mutex=Mutex("Global\MyMutex123"); // имя мьютекса (любое) после Global\
createdialog(0);
showdialog(0, "Диалог", 300, 300, 300, 300, 4, 1);
loop()sleep(10);
function getmessage(0, WM_CLOSE)
{
// удаление мьютекса
ReleaseMutex(my_mutex);
CloseHandle(my_mutex);
close();
}
function Mutex(string s)
{
if(OpenMutex(MUTEX_ALL_ACCESS, 0, s))
{
messagebox("Программа уже запущена");
close(); // если мьютекс существует, закрыть программу
}
return CreateMutex(0, 1, s); // иначе создать мьютекс
} |