¿Cómo saber si mi proyecto se ejecuta desde entorno de visual basic o desde el ejecutable?

Necesito saber como puedo saber si mi proyecto se esta ejecutando desde en entorno vb o desde el ejecutable.

2 Respuestas

Respuesta
1
Se me ocurren 2 cosas:
Primero si al compilar tu proyecto en un ejecutable utilizas un nombre distinto tanto para el ejecutable como para el nombre del proyecto podes utilizar la instrucción App. EXEName, eso cuando estas ejecutando un archivo .exe te da el nombre del archivo ejecutable sin sin extensión .exe, pero si lo estas ejecutando en el entorno de ejecución de vb te va a dar el nombre del proyecto ya que no hay un ejecutable.
La segunda opción, un poco más complicada es identificar el proceso de ejcucion de vb y revisar el titulo de su ventana (todo con API), en ella vas a encontrar algo así:
Proyecto - Microsoft Visual Basic [ejecutar]
De ese modo veras que el nombre del proyecto coincide con el de tu aplicación y también el vb esta en modo ejecucucion.
Respuesta
1
No entiendo bien la duda... Si tu estas en el entorno de Visual Basic y le das a ejecutar, el programa pasa linea por linea usando el código fuente (de ahí que puedas pararte a depurar).
Por otro lado tienes la opción de Compilar el proyecto, es decir, generar un EXE, y eso lo ejecutas desde el sistema como cualquier otro fichero.
En VB no te sirve de nada ejecutar un EXE (y no creo que puedas), ya que no vas a poder detenerte ni depurarlo. Es código maquina compilado. Las únicas llamadas a EXEs que puedes hacer son las que hagas desde tu propio programa, pero igualmente, se ejecutara el fichero y devolverá algo, pero no podrás depurar ni saber nada de su código.
Básicamente, si le das al Play en VB, ejecutas el programa tal cual (tengas EXE o no), y si ejecutas el exe desde el windows, da igual lo que tengas en VB... estas lanzando un exe ya generado a partir de un código (sea el que sea... basic, C, Cobol...)
Gracias por responder tan rapido.
Creo que me explique mal, lo que me dices es correcto. Yo lo que quiero saber si puedo poner código para saber si estoy ejecutando desde vb.
Concretamente intento poner algo así
si es '.exe'
on resume next
Fin si
Si estoy ejecutando en .exe que realize 'on resume next' y si estoy ejecutando desde vb (f5 o run) que no haya el 'on resume next' para que me dee el error y poder depurar
Vale, eso ya tiene un poco más de sentido, aunque no termino de entender exactamente para que, ya que si hay errores es el VB el que se detiene y te da opción a depurar.
Una de las cosas que puedes hacer es buscar los procesos en ejecución del Windows, de forma que si encuentras el exe hagas una cosa u otra.
He estado mirando en Microsoft y he encontrado esto:
http://support.microsoft.com/default.aspx?scid=KB;EN-US;q187913&
No lo he probado, y tampoco se que devuelve o como funciona exactamente, pero supongo que si te gusta el tema ya salsearas y miraras bien las funciones que hay (que no son pocas, je je).
Como comentario aparte, me parece bastante "chapuza" dejar saltos de errores en un exe, ya que el programa no estará haciendo lo que debe y en cambio sigue funcionando cara al usuario como si nada pasase. Creo que es mejor que de errores y depurarlos bien (usar funciones de logs, guardar ficheros, fechas, etc.) antes que hacer el Resume Next.
Esto de los procesos requiere que trabajes con el API de Windows, no se si lo habrás utilizado alguna vez.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas