Red de conocimiento informático - Material del sitio web - Cómo abrir un software varias veces

Cómo abrir un software varias veces

::CreateMutex(NULL,TRUE,"MutexName");//El contenido de la cadena se puede cambiar a voluntad. Es solo un nombre

if(GetLastError(). ==ERROR_ALREADY_EXISTS )

{

AfxMessageBox("Has abierto este programa");

salir(0);

regresar ;

}

Agregue el código anterior al constructor del proyecto.

El principio es crear un Mutex (mutex) en el kernel de Windows y determinar si se debe reiniciar en función del valor de retorno creado. Independientemente de ERROR_ALREADY_EXISTS

::CreateMutex(NULL,TRUE,"MutexName");//Crea un mutex llamado "MutexName"

if(GetLastError()==ERROR_ALREADY_EXISTS) // Determine qué error acaba de ocurrir.

//Cuando se inicia por primera vez, el error obtenido por GetLastError() es ERROR_SUCCESS por lo que el programa continúa ejecutándose. Ya existe un mutex llamado "MutexName" en el kernel de Windows hasta que lo libere con la instrucción ReleaseMutex("MutexName") o finalice el proceso actual.

//Al reiniciar por segunda vez, el kernel ya tiene un mutex llamado "MutexName", por lo que la creación fallará. Mediante GetLastError(), se determina que la causa del último fallo fue ERROR_ALREADY_EXISTS. , Lo que demuestra que tiene Hay un proceso, la salida (0) es para finalizar el proceso.

Personalmente, creo que el código anterior está mejor ubicado en el constructor que en la función InitInstance.