Primero el código (2 opciones) que ira en "On Startup":
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.
--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
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.