.data?
hWnd dd ?
hHook dd ?
dwMessage dd ?
szAscii db 4 dup (?)
HookProc proc _dwCode,_wParam,_lParam
local @szKeyState[256]:byte
invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam
invoke GetKeyboardState,addr @szKeyState
invoke GetKeyState,VK_SHIFT
mov @szKeyState + VK_SHIFT,al
mov ecx,_lParam
shr ecx,16
invoke ToAscii,_wParam,ecx,addr @szKeyState,addr szAscii,0
mov byte ptr szAscii [eax],0
invoke SendMessage,hWnd,dwMessage,dword ptr szAscii,NULL
xor eax,eax
ret
HookProc endp
上面语句mov byte ptr szAscii [eax],0 中的byte ptr szAscii [eax]是什么寻址方式呢?等同[byte ptr szAscii + eax]吗?其中eax中的值代表什么啊!
谢谢!
------解决方案--------------------------------------------------------
这边的EAX是调用完函数ToAscii的返回值;mov byte ptr szAscii [eax],0相当于
mov di,offser szAscii
mov byte ptr 【di+eax】,0
------解决方案--------------------------------------------------------
mov byte ptr szAscii [eax],0
类似于 mov byte ptr [szAscii+eax],0
注意这里的szAscii表示该标识符的地址。