Tengo una aplicación que usa conexión de socket para enviar y recibir datos de otra aplicación. Al crear el socket, usa el puerto 4998.Cómo ejecutar solo una instancia de aplicación
Ahí es donde yace mi problema. Una vez que inicio mi aplicación, el socket comienza a usar el puerto 4998. Por lo tanto, si deseo ejecutar la aplicación nuevamente, recibo un error de encuadernación de socket.
por lo que quiero limitar mi instancia de aplicación a uno. Eso significa que si la aplicación ya se está ejecutando y alguien intenta ejecutar la aplicación nuevamente haciendo clic en el ícono de exe o acceso directo, no debería ejecutar el programa, sino que debería llevar la aplicación existente a la parte superior.
Al llamar a OpenMutex() primero, tiene una condición de carrera. Llame a CreateMutex/Ex() primero. Le dirá si el mutex ya existe. Llame a OpenMutex() solo si CreateMutex() falla con un error ERROR_ACCESS_DENIED. –
¿Algún consejo sobre cómo hacer que esto funcione en Win7 +? Global \ x mutex no ven unos a otros de diferentes sesiones de inicio de sesión de usuario ... –
@ RomanPlášil que realmente hacen, usted debe haber hecho algo mal – paulm