Starcraft II me impide ejecutar varias instancias, pero si ejecuto la segunda instancia de sandbox en Sandboxie , funciona. ¿Qué podría explicar esto?
¿Cómo podría replicar este comportamiento para mis propios juegos?
Starcraft II me impide ejecutar varias instancias, pero si ejecuto la segunda instancia de sandbox en Sandboxie , funciona. ¿Qué podría explicar esto?
¿Cómo podría replicar este comportamiento para mis propios juegos?
Respuestas:
Además de Starcraft 2, la respuesta general a esto es: Adquirir (y bloquear, si la adquisición en sí misma no es equivalente a bloquear) un recurso específico del sistema operativo. Sal del juego si falla la adquisición / bloqueo. Ejemplos de tales recursos son:
En el extremo superior, la mayoría de las molestias para el cliente, el hardware especializado que (a veces necesariamente, como para algunos componentes de control robótico) solo puede usarse exclusivamente por un solo hilo, también puede usarse de esta manera.
Recomiendo el enfoque mutex, pero:
Otro método que se usa con frecuencia es simplemente verificar si se está ejecutando otro proceso con el mismo nombre.
La ventaja es que es ridículamente fácil: no tiene que preocuparse por los permisos de archivos ni saber qué es un mutex. La desventaja es que obtendrá un falso positivo si se ejecuta un programa diferente llamado starcraft2.exe
en la máquina.
Si está utilizando C ++ y la API de Windows, una forma de hacerlo es mediante el uso de FindWindow
parámetros como el nombre de la clase y / o el nombre de la ventana. Luego, si encuentra una coincidencia, simplemente salga de su programa incluso antes de cargar o crear una ventana.