Prevenir que se ejecuten dos instancias de la misma aplicaci

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
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.
Windows.EnumerateProccesses acepta un argumento, para buscar en todas las ventanas que hay en el compositor usa false
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)