Buenas,
Necesito hallar la dirección en memoria de una función, y pasarla a otra función. Tenía entendido que con AddressOf esto era posible de la siguiente manera:
Public Function Principal ()
Msgbox "Función principal"
End Function
....
OtraFuncion Parametro1, AddressOf Principal
Pero me tira el siguiente error:
Error de compilación:
Uso no válido del operado AddressOf
Gracias de antemano.
Usa un pequeño wrapper para saltarte la limitacion del IDE:
Public Function GetAddr(ByVal lAddr As Long) As Long
GetAddr = lAddr
End Function
OtraFuncion Parametro1, GetAddr(AddressOf Principal)
Muchas gracias por responder.
Pero ya lo intenté. Me sigue dando error. ¿Puede que sea de mi VB?
Si necesitas pongo lo que llevo de code.
Saludos!
Donde tenes la funcion a la que haces referencia con el AddressOf?
En un Form.
Public Function SMain()
MsgBox "Hola :)"
End Function
Y después, en el Form_Load
Inyectar ProcessHandle, GetAddr(AddressOf SMain)
Y las funciones:
Public Function GetAddr(ByVal lAddr As Long) As Long
GetAddr = lAddr
End Function
Private Function Inyectar(ProcessHandle As Long, ByVal EntryPoint As Long)
Dim Module As Long, NewModule As Long
Module = GetModuleHandleA(vbNullString)
VirtualFreeEx ProcessHandle, Module, 0, MEM_RELEASE
End Function
El code no está terminado.
Saludos!
P.D: Muchas gracias por su tiempo.
.
cuales son los parametros?... si es un proceso tuyo seria mejor que pusieras el codigo, si es una API mensiona cual es..., que no se te peude ayudar mucho de esta forma.
Pon el proceso con el que haces referencia "AddressOf ()" en un Modulo tipo Bas... y ponlo de forma PUBLIC
Private Sub Form_Load()
Inyectar &H0, GetAddr(AddressOf SMain)
End Sub
Public Function GetAddr(ByVal lAddr As Long) As Long
GetAddr = lAddr
End Function
Private Function Inyectar(ProcessHandle As Long, ByVal EntryPoint As Long)
End Function
en un modulo (BAS)
Public Function SMain()
End Function
Dulces Lunas!¡
Eso es, eso es!!!!
Tenía que ponerlo en un Módulo BAS!!!!
Mil gracias!!
Saludos!!