
Existen dos formas :
1 - EL NOMBRE DEL EXE ES DISTINTO DE EL DEL PROYECTO
El objeto App contiene información general sobre el programa, entre otras cosas el nombre del fichero ejecutable. Si el proyecto y el fichero ejecutable tienen distintos nombres podemos usar la propiedad App.EXEName para saber si estamos ejecutando el programa desde VB ya que en este caso en vez de devolvernos el nombre del fichero EXE nos devolverá el del proyecto.
2 - LOS NOMBRES DEL EXE Y DEL PROYECTO SON IGUALES
Podremos usar la función GetModuleFileName para saber si el programa se está ejecutando desde el IDE o desde la versión compilada. Si la función nos devuelve el path del IDE de VB, VB5.EXE, el programa se está ejecutando desde dentro del Visual.
La función GetModuleFileName tiene los siguientes parámetros :
- hModule : handle del módulo cuyo nombre queremos saber. Usaremos la propiedad hInstance del objeto App.
- lpFileName : puntero al buffer que recibirá el nombre. Usaremos un string de 255 caracteres.
- nSize : longitud del buffer. Pondremos 255
Declaraciones :
Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
Y para obtener el nombre :
Dim strFileName As String
Dim lngCount As Long
strFileName = String(255, 0)
lngCount = GetModuleFileName(App.hInstance, strFileName, 255)
strFileName = Left(strFileName, lngCount)
If UCase(Right(strFileName, 7)) <> "VB5.EXE" Then
MsgBox "Versión compilada"
Else
MsgBox "Dentro del IDE de VB"
End If

