如何自动移动Mouse,第1张

如何自动移动Mouse,第2张

其实用SetCursorPos()就够了,它的参数是萤对应的坐标,而不是某个窗口对应的逻辑坐标。本例中MoveCursor()传入的POINTAPI也是相对于firefly屏幕的坐标,这意味着从点FromP移动到顶部。最后,我还为Showje的文章付了钱,这篇文章的用途各不相同。不管是他的还是我的,在作为鼠标引导的程序之前,有一个地方需要解决,就是如何在鼠标自动移动的时候,让用户无法移动鼠标。这个问题需要使用JournalPlayBack钩子。在底层程序中,使用了EnableHook、FreeHook。这两个功能就是如何通过复制来禁用键盘和鼠标。
'下列程序正在运行。bas
Type rect
left As Long
top As Long
bottom As Long
End Type
Type POINTAPI
X As Long
Y As Long
End Type

声明函数SetCursorPos Lib "user32" (ByVal X为Long,ByVal Y为Long)一样长
声明函数GetWindowRect Lib " user 32 "(ByVal hwnd为Long,lpRect为Rect)一样长
声明子睡眠库" kernel32" (ByVal dwMilliseconds为Long)

public Sub move cursor(FromP As POINTAPI,ToP As POINTAPI)
Dim stepx As Long,stepy As Long,k As Long
Dim i As Long,j As Long,s delay As Long
stepx = 1
stepy = 1
I =(ToP。X - FromP。X)
如果i < 0那么stepx = -1
i = (ToP。Y - FromP。Y) [/br/ ]如果I < 0则stepy =-1 [/br/ ]'调用启用钩子'如果有. bas包括htmapi53.htm,将禁用mouse
for I = fromp . x to top . x step stepx
调用SetCursorpos (I,fromp.y)
Sleep (1)'让鼠标缓慢移动,这样效果更好
接下来I
for I = fromp . y to top . y stepy stepy
调用 I)
sleep(1)
next I
' call free hook ' enable mouse
end sub
下面的程序在表单中,需要3个命令按钮
private subcommand 3 _ click()
dimrect5a srect
dim P1 as point API,P2 point API
call getwindow rect(Command1 . hwnd,rect 5)'获取Command 1相对于屏幕的坐标
Y = (rect5。ToP + rect5。Bottom) \ 2
调用GetWindowRect(Command2.hwnd,rect5)
p2。X = (rect5。左+右5。右)\ 2
p2。Y = (rect5。ToP + rect5。底部)\ 2

移动光标(P1,p2)'鼠标由命令1 ->命令2
End Sub组成。

另外,下面这个文案是从Showje的站里抄来的,也是一样的结果,只是用的API完全不一样。

下面的程序需要表单中的2个命令键
。下面的程序放在
Private declare sub mouse _ event lib " user 32 " _
Byval dw flags As Long,_
ByVal dx As Long,_
ByVal dy As Long,_
ByVal cButtons As Long,_
Byval dw extra info As Long _
)格式的一般声明区域中

私有声明函数clientto screen Lib " user 32 " _
(_
ByVal hwnd As Long,_
LP point As POINTAPI _
)Long

私有声明函数GetSystemMetrics Lib " user 32 " _
(_
ByVal nIndex As Long _
)Long
私有声明函数GetCursorPos Lib " user 32 " _
(_
LP point As POINTAPI _
)Long

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 如何自动移动Mouse

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情