Попробуйте вызвать следующую функцию в главном, прежде чем вызывать класс диалогового окна приложения. Если он возвращает 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 и используйте его в виде строки в качестве имени мьютекса.