Запустите только один экземпляр приложения на основе диалога MFC - PullRequest
0 голосов
/ 21 мая 2009

Я создал приложение MFC Dialog Based.

Я запустил приложение, и оно работало нормально. Теперь, пока он работает, я снова запускаю приложение, и оно запускает другой его экземпляр.

Но я не хочу его поведения; Если приложение уже запущено, я хочу предотвратить его создание.

Пожалуйста, дайте мне код.

1 Ответ

8 голосов
/ 21 мая 2009

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

BOOL init()
{
   HANDLE mutex = CreateMutex(NULL, FALSE, "mutexname");
   if(mutex == NULL)
   {
      return FALSE;
   }

   if (GetLastError() == ERROR_ALREADY_EXISTS)
   { 
       /* You only need the message box if you wish to notify the user 
          that the process is running*/
       MessageBox("Another instance is already running.");
       return FALSE;
   }

   return TRUE;
} 

Убедитесь, что имя мьютекса уникально, используйте VS для генерации GUID и используйте его в виде строки в качестве имени мьютекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...