Статья Как запретить повторно открывать программу на C++

Darwin

Команда форума
Администратор
Сообщения
815
Реакции
389


Запрет на повторное открытие программы на C++​

В данной статье мы реализуем функцию на запрет повторного открытия программы, данная функция нужна что бы пользователь при открытий программы не открыл её еще один раз, очень полезная функция давайте ее реализуем естественно мы будем работать с ручкой (Handle)

C++:
void MutexDenied(LPCSTR mutexName) {
    HANDLE hMutex = OpenMutexA(MUTEX_ALL_ACCESS, 0, mutexName); // Открываем Mutex

    if (!hMutex)
        hMutex = CreateMutexA(0, 0, mutexName); // Если наш Mutex не найден создаем
    else
    {
        MessageBoxA(nullptr, "Programm already started", "Error", 0u); // Программа уже запущена выводим MSBOX
        CloseHandle(hMutex); // Закрываем ручку
        exit(-1); // Выходим с результатом return -1
    }
}

Теперь используем функцию и даем название нашему Mutex
Код:
int main() {
MutexDenied("AnyName");
}

Если пользователь попробует запустить программу еще раз у него просто не получиться, к нему выведится MSBOX с текстом Programm Already Started что программа уже запущена, вот такая полезная статья, пользуйтесь фишкой!​
 
Последнее редактирование:

vsvavan

Исследователь
Сообщения
27
Реакции
1
настрою у себя пригодится
 

$1and1

Активный
Сообщения
275
Реакции
41


Запрет на повторное открытие программы на C++​

В данной статье мы реализуем функцию на запрет повторного открытия программы, данная функция нужна что бы пользователь при открытий программы не открыл её еще один раз, очень полезная функция давайте ее реализуем естественно мы будем работать с ручкой (Handle)

C++:
void MutexDenied(LPCSTR mutexName) {
    HANDLE hMutex = OpenMutexA(MUTEX_ALL_ACCESS, 0, mutexName); // Открываем Mutex

    if (!hMutex)
        hMutex = CreateMutexA(0, 0, mutexName); // Если наш Mutex не найден создаем
    else
    {
        MessageBoxA(nullptr, skCrypt("Programm already started"), skCrypt("Error"), 0u); // Программа уже запущена выводим MSBOX
        CloseHandle(hMutex); // Закрываем ручку
        exit(-1); // Выходим с результатом return -1
    }
}

Теперь используем функцию и даем название нашему Mutex
Код:
int main() {
MutexDenied("AnyName");
}

Если пользователь попробует запустить программу еще раз у него просто не получиться, к нему выведится MSBOX с текстом Programm Already Started что программа уже запущена, вот такая полезная статья, пользуйтесь фишкой!​
было бы удобнее чтобы заранее знал имя файла

C++:
char*name=__argv[0];
 
Верх Низ