📄 lion-tut-c24.htm
字号:
<BR><B> invoke GetWindowRect,hDlg,addr
rect</B> <BR><B> invoke SetWindowPos,
hDlg, HWND_TOPMOST, rect.left, rect.top, rect.right, rect.bottom,
SWP_SHOWWINDOW</B> <BR><B> .elseif uMsg==WM_MOUSEHOOK</B>
<BR><B> invoke
GetDlgItemText,hDlg,IDC_HANDLE,addr buffer1,128</B>
<BR><B> invoke wsprintf,addr
buffer,addr template,wParam</B>
<BR><B> invoke lstrcmpi,addr
buffer,addr buffer1</B> <BR><B> .if
eax!=0</B>
<BR><B> invoke
SetDlgItemText,hDlg,IDC_HANDLE,addr buffer</B>
<BR><B> .endif</B>
<BR><B> invoke
GetDlgItemText,hDlg,IDC_CLASSNAME,addr buffer1,128</B>
<BR><B> invoke
GetClassName,wParam,addr buffer,128</B>
<BR><B> invoke lstrcmpi,addr
buffer,addr buffer1</B> <BR><B> .if
eax!=0</B>
<BR><B> invoke
SetDlgItemText,hDlg,IDC_CLASSNAME,addr buffer</B>
<BR><B> .endif</B>
<BR><B> invoke
GetDlgItemText,hDlg,IDC_WNDPROC,addr buffer1,128</B>
<BR><B> invoke
GetClassLong,wParam,GCL_WNDPROC</B>
<BR><B> invoke wsprintf,addr
buffer,addr template,eax</B> <BR><B>
invoke lstrcmpi,addr buffer,addr buffer1</B>
<BR><B> .if eax!=0</B>
<BR><B> invoke
SetDlgItemText,hDlg,IDC_WNDPROC,addr buffer</B>
<BR><B> .endif</B>
<BR><B> .elseif uMsg==WM_COMMAND</B>
<BR><B> .if lParam!=0</B>
<BR><B> mov
eax,wParam</B>
<BR><B> mov
edx,eax</B>
<BR><B> shr
edx,16</B>
<BR><B> .if
dx==BN_CLICKED</B>
<BR><B>
.if ax==IDC_EXIT</B>
<BR><B>
invoke SendMessage,hDlg,WM_CLOSE,0,0</B>
<BR><B>
.else</B>
<BR><B>
.if HookFlag==FALSE</B>
<BR><B>
invoke InstallHook,hDlg</B>
<BR><B>
.if eax!=NULL</B>
<BR><B>
mov HookFlag,TRUE</B>
<BR><B>
invoke SetDlgItemText,hDlg,IDC_HOOK,addr UnhookText</B>
<BR><B>
.endif</B>
<BR><B>
.else</B>
<BR><B>
invoke UninstallHook</B>
<BR><B>
invoke SetDlgItemText,hDlg,IDC_HOOK,addr HookText</B>
<BR><B>
mov HookFlag,FALSE</B>
<BR><B>
invoke SetDlgItemText,hDlg,IDC_CLASSNAME,NULL</B>
<BR><B>
invoke SetDlgItemText,hDlg,IDC_HANDLE,NULL</B>
<BR><B>
invoke SetDlgItemText,hDlg,IDC_WNDPROC,NULL</B>
<BR><B>
.endif</B>
<BR><B>
.endif</B>
<BR><B>
.endif</B> <BR><B> .endif</B>
<BR><B> .else</B>
<BR><B> mov eax,FALSE</B>
<BR><B> ret</B>
<BR><B> .endif</B> <BR><B> mov eax,TRUE</B>
<BR><B> ret</B> <BR><B>DlgFunc endp</B>
<P><B>end start</B>
<P>;----------------------------------------------------- DLL的源代码部分
-------------------------------------- <BR><B>.386</B> <BR><B>.model
flat,stdcall</B> <BR><B>option casemap:none</B> <BR><B>include
\masm32\include\windows.inc</B> <BR><B>include \masm32\include\kernel32.inc</B>
<BR><B>includelib \masm32\lib\kernel32.lib</B> <BR><B>include
\masm32\include\user32.inc</B> <BR><B>includelib \masm32\lib\user32.lib</B>
<P><B>.const</B> <BR><B>WM_MOUSEHOOK equ WM_USER+6</B>
<P><B>.data</B> <BR><B>hInstance dd 0</B>
<P><B>.data?</B> <BR><B>hHook dd ?</B> <BR><B>hWnd dd ?</B>
<P><B>.code</B> <BR><B>DllEntry proc hInst:HINSTANCE, reason:DWORD,
reserved1:DWORD</B> <BR><B> .if reason==DLL_PROCESS_ATTACH</B>
<BR><B> push hInst</B>
<BR><B> pop hInstance</B>
<BR><B> .endif</B> <BR><B> mov
eax,TRUE</B> <BR><B> ret</B> <BR><B>DllEntry Endp</B>
<P><B>MouseProc proc nCode:DWORD,wParam:DWORD,lParam:DWORD</B>
<BR><B> invoke CallNextHookEx,hHook,nCode,wParam,lParam</B>
<BR><B> mov edx,lParam</B> <BR><B> assume
edx:PTR MOUSEHOOKSTRUCT</B> <BR><B> invoke
WindowFromPoint,[edx].pt.x,[edx].pt.y</B> <BR><B> invoke
PostMessage,hWnd,WM_MOUSEHOOK,eax,0</B> <BR><B> assume
edx:nothing</B> <BR><B> xor eax,eax</B>
<BR><B> ret</B> <BR><B>MouseProc endp</B>
<P><B>InstallHook proc hwnd:DWORD</B> <BR><B> push hwnd</B>
<BR><B> pop hWnd</B> <BR><B> invoke
SetWindowsHookEx,WH_MOUSE,addr MouseProc,hInstance,NULL</B>
<BR><B> mov hHook,eax</B> <BR><B> ret</B>
<BR><B>InstallHook endp</B>
<P><B>UninstallHook proc</B> <BR><B> invoke
UnhookWindowsHookEx,hHook</B> <BR><B> ret</B>
<BR><B>UninstallHook endp</B>
<P><B>End DllEntry</B>
<P>;---------------------------------------------- DLL的Makefile文件
----------------------------------------------
<P><B>NAME=mousehook</B> <BR><B>$(NAME).dll: $(NAME).obj</B>
<BR><B> Link /SECTION:.bss,S
/DLL /DEF:$(NAME).def /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm\lib $(NAME).obj</B>
<BR><B>$(NAME).obj: $(NAME).asm</B>
<BR><B> ml /c /coff /Cp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -