曾几何时我遇到了钩子这个神奇的东西,特别是有些人用在*挂中,感觉神奇,到底是怎么实现的呢?
本程序实现的是实现获得鼠标传递消息的窗口的句柄
注意编译成dll !然后调用就可以了,只是实现了一个思路而已....
代码:
.386 .model flat,stdcall option casemap:none include C:\RadASM\masm32\include\windows.inc include C:\RadASM\masm32\include\kernel32.inc include C:\RadASM\masm32\include\user32.inc includelib C:\RadASM\masm32\lib\kernel32.lib includelib C:\RadASM\masm32\lib\user32.lib .const WM_MOUSEHOOK equ WM_USER+6 .data hInstance dd 0 .data? hHook dd ? hWnd dd ? .code DllEntry proc hInst:HINSTANCE ,reason:DWORD ,reserved1:DWORD PUSH hInst POP hInstance MOV EAX,TRUE ret DllEntry endp MouseProc proc nCode:DWORD ,wParam:DWORD,lParam:DWORD invoke CallNextHookEx,hHook,nCode,wParam,lParam mov EDX,lParam assume EDX:PTR MOUSEHOOKSTRUCT invoke WindowFromPoint,[EDX].pt.x,[EDX].pt.y;获得包含指定点的窗口的句柄 invoke PostMessage,hWnd,WM_MOUSEHOOK,EAX,0 assume EDX:nothing XOR EAX,EAX ret MouseProc endp InstallHook proc hwnd:DWORD PUSH hwnd POP hWnd invoke SetWindowsHookEx,WH_MOUSE,addr MouseProc,hInstance,NULL Mov hHook,EAX ret InstallHook endp UninstallHook proc invoke UnhookWindowsHookEx,hHook ret UninstallHook endp End DllEntry