1-й способ
Я просто линкую к программе модуль с кодом
#include <vcl.h> // не знаю где этот Mutex обитает :)
class TOnlyOneProgram {
HANDLE handle;
public:
TOnlyOneProgram(){
// create mutex with the specific name
// (подставляется уникальное имя (например по Ctrl-Shift-G))
handle = CreateMutex(0,true,"FCD17B00-2DF6-11D6-A722-00105A29D4ED");
// terminate program if mutex with the same name exists in the system
if(GetLastError()==ERROR_ALREADY_EXISTS){
exit(EXIT_SUCCESS);
// on exit, object is not created, so destructor is not called
}
}
~TOnlyOneProgram(){
// release mutex on exit
ReleaseMutex(handle);
}
} OnlyProgramMutex;
Sergiy Kanilo
2-й способ
Пишешь в главном юните программы:
bool RunMe = true;
HWND HMutex = CreateMutex(NULL,true,"Name");
if (GetLastError()!=0) RunMe = false;
ReleaseMutex(hMutex);
if (RunMe) {
// здесь пишешь, что должно выполняться, если прога запускается первый раз
} else {
// если уже не первый..
}
Вместо "Name" - практически любое название - такое, которое бы по
возможности никто другой бы не в силах был придумать :))
Vitaly Slobodskoy 2:5015/128.22 Mihail Kabanov 2:5020/1721
Предыдущий вопрос
|
|
Следующий вопрос
источник
by jenyok
|