3 mensajes Página 1 de 1
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
Parsed in 0.003 seconds, using GeSHi 1.0.8.9


--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
Parsed in 0.003 seconds, using GeSHi 1.0.8.9


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.
Pregunta del novato:

Donde encuentro el "on StartUP"
:cerrado:
Imagen
3 mensajes Página 1 de 1

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron