Página 1 de 1

[Script] Ejecutar solo 1 instancia

Publicado: 03 Mar 2011 20:49
por webultra
Primero el código (2 opciones) que ira en "On Startup":
--Opción 1
local tP = System.EnumerateProcesses();
if tP then
	local tIns = 0;
	for handle, path in pairs(tP) do
		if path == _SourceFolder.."\\".._SourceFilename then
			tIns = tIns + 1
		end
	end
	if tIns > 1 then
		Dialog.Message("Error", "Application already running");
		os.exit();
	end
end
--Opción 2
local tP = Window.EnumerateProcesses();
if tP then
	local tIns = 1;------## Nótese el cambio
	for handle, path in pairs(tP) do
		if path == _SourceFolder.."\\".._SourceFilename then
			tIns = tIns + 1
		end
	end
	if tIns > 1 then
		Dialog.Message("Error", "Application already running");
		os.exit();
	end
end
Un error que tenía una amigo era usar la función Window.EnumerateProcesses en el evento "On Startup" pero la variable "tIns" la colocaba con valor de 0 (tal como viene en el archivo de ayuda). El error esta en que dicha función sólo retorna aquellos procesos que ya habían generado una ventana, pero el código que esta en "On startup" se ejecuta antes de crear la ventana (ahi el error).

Por otro lado, la función System.EnumerateProcesses si encontrará todos los ejecutables corriendo aún sin ventana.

Por cierto, en éste caso he decidido usar os.exit() en lugar de Application.Exit() para evitar que se genere un efecto de flasheo de la ventana principal apareciendo y cerrándose.

Re: [Script] Ejecutar solo 1 instancia

Publicado: 26 Jul 2011 01:05
por kocx520
Pregunta del novato:

Donde encuentro el "on StartUP"

Re: [Script] Ejecutar solo 1 instancia

Publicado: 15 Dic 2011 19:19
por abood1987
:cerrado:

Re: [Script] Ejecutar solo 1 instancia

Publicado: 04 Jun 2018 03:49
por Chilepunk20182018
Excelente, la primera opción funciona a la perfección. :rofl: Gracias!