Página 1 de 1

Prevenir que se ejecuten dos instancias de la misma aplicaci

Publicado: 10 Ene 2020 08:06
por marcpv89
Hola a todos, espero que puedan ayudarme. Estoy haciendo una aplicación la cual le doy la opción al usuario de iniciarla minimizada al tray del sistema o no.

Siempre y cuando tenga activo la opción de no iniciar minimizada la aplicación si detecta que hay dos instancias en ejecución y cierra la última abierta. Todo eso utilizando Windows.EnumerateProccesses.

Ahora bien si la aplicación inicia minimizada este proceso no funciona, pues el busca el handle de las ventanas activas y al ejecutarse minimizada al tray no crea una ventana, por lo cual se ejecuta cuantas instancias el usuario ejecute.

La ayuda que necesito es una forma que se realice la comprobación tanto minimizada al tray como en modo ventana.

En espera de respuesta alguna.

Re: Prevenir que se ejecuten dos instancias de la misma aplicaci

Publicado: 10 Ene 2020 18:41
por Pabloko
Windows.EnumerateProccesses acepta un argumento, para buscar en todas las ventanas que hay en el compositor usa false

Re: Prevenir que se ejecuten dos instancias de la misma aplicaci

Publicado: 11 Ene 2020 11:05
por usamakey
Try this

Application.Minimize();

fileA = "autorun.exe"; 
fileB = "autorun.exe";
sProcesses = Window.EnumerateProcesses();

for Procn, Curr_Proc_path in pairs (sProcesses) do
proc_file = String.SplitPath(Curr_Proc_path);
if (String.Lower(proc_file.Filename..proc_file.Extension)) == fileA then
Window.Close(Procn, CLOSEWND_SENDMESSAGE);
end
if (String.Lower(proc_file.Filename..proc_file.Extension)) == fileB then;
Window.Close(Procn, CLOSEWND_SENDMESSAGE);
end
end
Application.Sleep(1000)