gracias raul338 , probe ese programa vbAdvance y si me anda rebien, tan solo con cargar la dll se ejecuta automaticamente el dllmain y al descargarse se vuelve a ejecutar, lo probe con este codigo
la Dll:
Option Explicit
Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" ( _
ByVal hwnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal wType As Long) As Long
Public Function DllMain() As Long
DllMain = MessageBox(0, "hola", "titulo", 64)
DllMain = MessageBox(0, "hola", "titulo", 48)
DllMain = MessageBox(0, "hola", "titulo", 16)
End Function
el programa:
Option Explicit
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Dim hModule As Long
Private Sub Command1_Click()
hModule = LoadLibrary("test.dll")
Me.Caption = hModule
End Sub
Private Sub Command2_Click()
Call FreeLibrary(hModule)
Me.Caption = ""
End Sub
Private Sub Form_Load()
Me.Caption = ""
End Sub
aunque si cierras el programa sin antes descargar la dll me sale un mensaje de error : la instruccion "xxxxxxx" hace referencia a la memoria "xxxxx" no se puede written , pero es un problema de lo mas minimo que lo solucione con FreeLibrary, gracias y saludos.