BandaAncha.eu

Comunidad de usuarios
de fibra, móvil y ADSL

No puedo impedir que un archivo SCR se ejecute en otra instancia

P B Fierro

Tengo un programa en C# que ejecuto como salvapantallas (extensión .scr) que activa la pantalla de bloqueo tras un tiempo.

La cuestión es que quiero que cuando doy al botón "desactivar temporalmente" se pare el temporizador, se minimice el programa y no se ejecute una nueva instancia del programa.

Con el archivo .exe no tengo ningún problema y va todo como la seda, pero cuando se ejecuta en versión salvapantallas se abre otra instancia del programa y no se cierra inmediatamente como debería.

Lo he intentado de dos formas que son:

//no permitir más de una ejecución del programa forma 1:
Process[] instancias = Process.GetProcessesByName("Bloquea2");
foreach (Process proceso in instancias)
{
	if (instancias.Length>1)
	{
		Application.Exit();
		break;
	}
	//Forma 2:
	if(Settings.Default.ejecutando==true)
		{ Application.Exit(); }
	Settings.Default.ejecutando = true;
	Settings.Default.Save();
}
// (al salir del programa fijo Settings.Default.ejecutando en false)
imagen.webp
naveganteperdido
1

es posible que no puedas impedirlo de ninguna manera, si tener ni zorra de c# ahora mismo, no has pensado que quizas el problema es que el binario que intrepreta el scr hace lo que le sale de la poya?, si este siempre inicia una nueva instancia porque asi esta programado, no podras hacer nada

yo lo que probaria para comprobar que es lo que digo es usar un archivo o clave de registro para intercambiar informacion entre las instancias

BocaDePez
BocaDePez
1

Y si el salvapantallas no te lee el mutex, usa un fichero.