-
-
问题:显示鼠标的坐标,奇怪的错误?
-
发表于: 2008-3-6 23:08 3177
-
显示鼠标的坐标:获得坐标后调用自定义的函数转换成字符。
鼠标限制在窗口内,不会小于100。
z10 dd 10
sbx dd ?
dz dd 3 dup(?);转换成字符后存储在此。
invoke GetCursorPos,addr sbx
sub dword ptr sbx,100;;;;;;;;;;;;;;;;;;;;;;;;;;;这里注释掉,显示的坐标正确,减100后则会显示错误的坐标。
push dword ptr sbx
push offset dz
call zfzh
……
……
……
zfzh:
mov ebx,DWORD ptr [esp+4]
mov eax,DWORD ptr [esp+8]
mov ecx,9
cmp eax,1000000000
jnc @f
dec ecx
cmp eax,100000000
jnc @f
dec ecx
cmp eax,10000000
jnc @f
dec ecx
cmp eax,1000000
jnc @f
dec ecx
cmp eax,100000
jnc @f
dec ecx
cmp eax,10000
jnc @f
dec ecx
cmp eax,1000
jnc @f
dec ecx
cmp eax,100
jnc @f
dec ecx
cmp eax,10
jnc @f
dec ecx
@@:
xor edx,edx
div DWORD ptr z10
add edx,30h
mov BYTE ptr [ebx+ecx],dl
dec ecx
cmp ecx,0ffffffffh
jnz @B
add esp,12
jmp DWORD ptr [esp-12]
鼠标限制在窗口内,不会小于100。
z10 dd 10
sbx dd ?
dz dd 3 dup(?);转换成字符后存储在此。
invoke GetCursorPos,addr sbx
sub dword ptr sbx,100;;;;;;;;;;;;;;;;;;;;;;;;;;;这里注释掉,显示的坐标正确,减100后则会显示错误的坐标。
push dword ptr sbx
push offset dz
call zfzh
……
……
……
zfzh:
mov ebx,DWORD ptr [esp+4]
mov eax,DWORD ptr [esp+8]
mov ecx,9
cmp eax,1000000000
jnc @f
dec ecx
cmp eax,100000000
jnc @f
dec ecx
cmp eax,10000000
jnc @f
dec ecx
cmp eax,1000000
jnc @f
dec ecx
cmp eax,100000
jnc @f
dec ecx
cmp eax,10000
jnc @f
dec ecx
cmp eax,1000
jnc @f
dec ecx
cmp eax,100
jnc @f
dec ecx
cmp eax,10
jnc @f
dec ecx
@@:
xor edx,edx
div DWORD ptr z10
add edx,30h
mov BYTE ptr [ebx+ecx],dl
dec ecx
cmp ecx,0ffffffffh
jnz @B
add esp,12
jmp DWORD ptr [esp-12]
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
赞赏
雪币:
留言: