Problema con AddressOf [Solucionado]

Iniciado por Slek Hacker, 26 Septiembre 2010, 15:03 PM

0 Miembros y 1 Visitante están viendo este tema.

Slek Hacker

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:

Código (vb) [Seleccionar]
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.

Karcrack

Usa un pequeño wrapper para saltarte la limitacion del IDE:
Código (vb) [Seleccionar]
Public Function GetAddr(ByVal lAddr As Long) As Long
    GetAddr = lAddr
End Function

OtraFuncion Parametro1, GetAddr(AddressOf Principal)

Slek Hacker

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!

cobein

Donde tenes la funcion a la que haces referencia con el AddressOf?
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

Slek Hacker

En un Form.

Código (vb) [Seleccionar]
Public Function SMain()
MsgBox "Hola :)"
End Function


Y después, en el Form_Load

Código (vb) [Seleccionar]
Inyectar ProcessHandle, GetAddr(AddressOf SMain)

Y las funciones:

Código (vb) [Seleccionar]
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.

BlackZeroX

#5
.
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

Código (Vb) [Seleccionar]


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)

Código (vb) [Seleccionar]


Public Function SMain()

End Function



Dulces Lunas!¡
The Dark Shadow is my passion.

Slek Hacker

Eso es, eso es!!!!
Tenía que ponerlo en un Módulo BAS!!!!

Mil gracias!!

Saludos!!