Ассемблер для Windows

В Можно ли не допустить многократный запуск одного и того же приложения?



В. Можно ли не допустить многократный запуск одного и того же приложения?

Да. Наиболее часто употребляемым для этого средством является создание объекта Mutex. Этот объект как раз и предназначен для того, чтобы координировать разные процессы. Создается данный объект при помощи функции CreateMutex. Рассмотрим параметры этой функции.

  1. 1-й параметр. Указатель на структуру, определяющую атрибут доступа. Обычно NULL (0).
  2. 2-й параметр. Флаг. В случае ненулевого значения процесс требует немедленного владения объектом (!).
  3. 3-й параметр. Указатель на имя объекта.
  4. При запуске программы она создает Mutex. Второй параметр должен быть ненулевым. При вторичном запуске программы попытка создания Mutex вызовет ошибку, что и может расцениваться как повод немедленного выхода из программы.

    К тому же результату можно прийти, используя семафор или файл, отображаемый в память. В данном случае все достаточно тривиально.

    Еще один подход основан на разделяемой памяти. Определим область разделяемой памяти и там - переменную. При запуске приложение проверяет значение переменной, и если она равна нулю, то засылает туда единицу. Если переменная уже равна единице, то - выход (или действия, предусмотренные в этом случае).

    Все способы, указанные в данном разделе столь просты, что мы больше не будем на них останавливаться.



    Содержание раздела