Hola, bueno estaba por ahi mirando codigos y me tope con aguna de estas funciones asi que las junte con algunas que conocia y usaba. Me gustaria que presenten otras maneras o simplemente comenten acerca de estas funciones para ver cual creen que es mejor y por que.
En mi opinion la numero 1 (IsEXE1) es la mejor de todas.
Option Explicit
Private Declare Function GetModuleHandle Lib "kernel32.dll" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
Private Sub Form_Load()
MsgBox IsEXE0
MsgBox IsEXE1
MsgBox IsEXE2
MsgBox IsEXE3
End Sub
Private Function IsEXE0() As Boolean
On Error GoTo IDE
Debug.Print 1 / 0
IsEXE0 = True
IDE:
End Function
Private Function IsEXE1() As Boolean
Static bEXE As Boolean
If Not bEXE Then
bEXE = True
Debug.Assert IsEXE1() Or True
IsEXE1 = bEXE
End If
bEXE = False
End Function
Private Function IsEXE2() As Boolean
IsEXE2 = Not (App.EXEName = App.Title)
End Function
Private Function IsEXE3() As Boolean
If GetModuleHandle("vba6") = 0 Then
IsEXE3 = True
End If
End Function
Yo ocupo y solo concia la ultima , esta para mi es la mejor ya que ocupa api's ;D.
yo miro si el proceso padre es vb6.exe, lueg probaer alguna de las que ofreces.
Gracias.
If App.LogMode = 0 Then
MsgBox "ide"
Else
MsgBox "exe"
End If
Parece funcionar correctamente, me pregunto porque nadie la usa...