如何自动移动Mouse

锡纸上的青春

锡纸上的青春

2016-02-19 14:22

下面,图老师小编带您去了解一下如何自动移动Mouse,生活就是不断的发现新事物,get新技能~
事实上是使用SetCursorPos()便可以了,而它的参数是对应於萤的座标,而不是对应某一个Window的Logic座标。这个例子中的MoveCursor()所传入的POINTAPI也是相对於萤屏的座标,指的是从点FromP移动到ToP。最後面我也付了Showje的文章,使用的方式全部不同,不管是他的或我的,都有一个地方要解决才能做为Mouse自动导引的程式,那就是Mouse在自动Move时,如何让使用者不能移动Mouse,而这个问题就要使用JournalPlayBackHook,底下的程式中,使用EnableHook,FreeHook,这两个函数是Copy自如何使键盘、Mouse失效。

'以下程式在.bas
  TypeRECT
  LeftAsLong
  ToPAsLong
  RightAsLong
  BottomAsLong
  EndType
  TypePOINTAPI
  XAsLong
  YAsLong
  EndType

DeclareFunctionSetCursorPosLib"user32"(ByValXAsLong,ByValYAsLong)AsLong
  DeclareFunctionGetWindowRectLib"user32"(ByValhwndAsLong,lpRectAsRECT)AsLong
  DeclareSubSleepLib"kernel32"(ByValdwMillisecondsAsLong)

PublicSubMoveCursor(FromPAsPOINTAPI,ToPAsPOINTAPI)
  DimstepxAsLong,stepyAsLong,kAsLong
  DimiAsLong,jAsLong,sDelayAsLong
  stepx=1
  stepy=1
  i=(ToP.X-FromP.X)
  Ifi0Thenstepx=-1
  i=(ToP.Y-FromP.Y)
  Ifi0Thenstepy=-1
  'CallEnableHook'如果有Includehtmapi53.htm的.bas时,会DisableMouse
  Fori=FromP.XToToP.XStepstepx
  CallSetCursorPos(i,FromP.Y)
  Sleep(1)'让Mouse的移动慢一点,这样效果较好
  Nexti
  Fori=FromP.YToToP.YStepstepy
  CallSetCursorPos(ToP.X,i)
  Sleep(1)
  Nexti
  'CallFreeHook'EnableMouse
  EndSub
  '以下程式在Form中,需3个Command按键
  PrivateSubCommand3_Click()
  Dimrect5AsRECT
  Dimp1AsPOINTAPI,p2AsPOINTAPI
  CallGetWindowRect(Command1.hwnd,rect5)'取得Command1相对於Screen的座标
  p1.X=(rect5.Left rect5.Right)2
  p1.Y=(rect5.ToP rect5.Bottom)2
  CallGetWindowRect(Command2.hwnd,rect5)
  p2.X=(rect5.Left rect5.Right)2
  p2.Y=(rect5.ToP rect5.Bottom)2

CallMoveCursor(p1,p2)'Mouse由Command1-Command2
  EndSub

另外从Showje的站有Copy以下的程式码,也是做相同的果,只是使用的API全部不同

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

'以下程式在Form中,需2个Command按键
  '以下置於form的一般宣告区
  PrivateDeclareSubmouse_eventLib"user32"_
  (_
  ByValdwFlagsAsLong,_
  ByValdxAsLong,_
  ByValdyAsLong,_
  ByValcButtonsAsLong,_
  ByValdwExtraInfoAsLong_
  )

PrivateDeclareFunctionClientToScreenLib"user32"_
  (_
  ByValhwndAsLong,_
  lpPointAsPOINTAPI_
  )AsLong

PrivateDeclareFunctionGetSystemMetricsLib"user32"_
  (_
  ByValnIndexAsLong_
  )AsLong
  PrivateDeclareFunctionGetCursorPosLib"user32"_
  (_
  lpPointAsPOINTAPI_
  )AsLong
  

PrivateTypePOINTAPI
  xAsLong
  yAsLong
  EndType

PrivateTypeOSVERSIONINFO
  dwOSVersionInfoSizeAsLong
  dwMajorVersionAsLong
  dwMinorVersionAsLong
  dwBuildNumberAsLong
  dwPlatformIdAsLong
  szCSDVersionAsString*128
  EndType
  

PrivateConstMOUSEEVENTF_MOVE=&H1'mousemove
  PrivateConstMOUSEEVENTF_LEFTDOWN=&H2'leftbuttondown
  PrivateConstMOUSEEVENTF_LEFTUP=&H4'leftbuttonup
  PrivateConstMOUSEEVENTF_ABSOLUTE=&H8000'absolutemove
  

PrivateSubCommand1_Click()

DimptAsPOINTAPI
  Dimdl&
  Dimdestx&,desty&,curx&,cury&
  Dimdistx&,disty&
  Dimscreenx&,screeny&
  Dimfinished
  Dimptsperx&,ptspery&

pt.x=10
  pt.y=10
  dl&=ClientToScreen(Command2.hwnd,pt)

screenx&=GetSystemMetrics(0)'0表x轴

screeny&=GetSystemMetrics(1)'1表y轴

destx&=pt.x*&HFFFF&/screenx&
  desty&=pt.y*&HFFFF&/screeny&
  

ptsperx&=&HFFFF&/screenx&
  ptspery&=&HFFFF&/screeny&

'Nowmoveit
  Do
  dl&=GetCursorPos(pt)
  curx&=pt.x*&HFFFF&/screenx&
  cury&=pt.y*&HFFFF&/screeny&
  distx&=destx&-curx&
  disty&=desty&-cury&
  If(Abs(distx&)2*ptsperx&AndAbs(disty&)2*ptspery)Then
  'Closeenough,gotherestoftheway
  curx&=destx&
  cury&=desty&
  finished=True
  Else
  'Movecloser
  curx&=curx& Sgn(distx&)*ptsperx*2
  cury&=cury& Sgn(disty&)*ptspery*2
  EndIf
  mouse_eventMOUSEEVENTF_ABSOLUTE_
  OrMOUSEEVENTF_MOVE,curx,cury,0,0
  LoopWhileNotfinished

'到家了,按上右键吧!注:是左键,Showje的笔误
  '以下是在(curx,cury)的座标下,模拟Mouse左键的downandup
  mouse_eventMOUSEEVENTF_ABSOLUTEOr_
  MOUSEEVENTF_LEFTDOWN,curx,cury,0,0

mouse_eventMOUSEEVENTF_ABSOLUTEOr_
  MOUSEEVENTF_LEFTUP,curx,cury,0,0

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

EndSub

PrivateSubCommand2_Click()
  MsgBox"看你往哪儿逃!哈!!"
  EndSub

->

展开更多 50%)
分享

猜你喜欢

如何自动移动Mouse

编程语言 网络编程
如何自动移动Mouse

vb实现隐藏Mouse

编程语言 网络编程
vb实现隐藏Mouse

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

酷盘PC版如何自动备份移动设备中的照片

电脑网络
酷盘PC版如何自动备份移动设备中的照片

MAC如何清洁Mighty Mouse鼠标导航小球

电脑入门
MAC如何清洁Mighty Mouse鼠标导航小球

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

mouse_on_title.js

Web开发
mouse_on_title.js

Win7任务栏如何停止窗口自动移动

电脑网络
Win7任务栏如何停止窗口自动移动

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Windows双系统卸载助手使用教程

Windows双系统卸载助手使用教程

防火墙的功能包括哪些?

防火墙的功能包括哪些?
下拉加载更多内容 ↓