Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: RHL en Noviembre 12, 2011, 08:44:12 pm
-
bueno eso! :)
e estado probando haciendo unas DLLs con el metodo de crear Dlls y llamarlas tipo api:
http://www.elguille.info/vb/avanzado/crear_dll_windows_con_vb6_explicado.htm
ahora estoy haciendo una dll que haga un hooks hacia el mouse :P
el problema es que cuando la llamo a la funcion no me retorna ningun valor ( le e puesto de retorno un boolean )
pienso que es porque el hook llama a una funcion callback :P sera que no se puede hacer un hook en dll?
pense en depurar la dll para ver que pasaba pero no encuentro como :P
alguien sabe que puedo hacer o que pasa ?=
gracias :)
el hook esta bien lo e probado en un proyecto con form y todo y funciona :)
-
How can I get HINSTANCE from a DLL? (http://stackoverflow.com/questions/2126657/how-can-i-get-hinstance-from-a-dll)
-
Holas :)
pues e probado seba123neo pero me devuelve 0 osea que no se engancha
e probado con teclado y con mouse y no e podido :(
el codigo:
e probado con la API ( GetModuleHandle ) pasarle como parametro nulo ( "" ) y el nombre de la dll ( proyecto1.dll ) y no funka :(
modulo bas:
Option Explicit
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private Declare Sub RtlMoveMemory Lib "kernel32" (Dest As Any, Src As Any, ByVal ln As Long)
Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
Private Const WH_KEYBOARD_LL As Long = &H13
Public hHook As Long
Const VK_SHIFT = &H10
Public Function MMM1(ByVal n1 As Integer, ByVal n2 As Integer) As Long
Dim tmp As Long
tmp = n1 + n2
RtlMoveMemory ByVal VarPtr(MMM1), ByVal VarPtr(tmp), 4
MsgBox "SET HOOK..."
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf KeyboardProc, GetModuleHandle(""), 0)
MsgBox hHook
MsgBox "FINISH..."
End Function
Public Function KeyboardProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If idHook < 0 Then
KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
Else
If (GetKeyState(VK_SHIFT) And &HF0000000) And wParam = Asc("S") Then
MsgBox "Shift-S "
End If
KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
End If
End Function
el rtlmovememory es solo operacion y que me devuelva un valor :P