如何自动移动Mouse

2016-02-19 14:22 207 1 收藏

下面,图老师小编带您去了解一下如何自动移动Mouse,生活就是不断的发现新事物,get新技能~

【 tulaoshi.com - 编程语言 】

事实上是使用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全部不同

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

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

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&

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

'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

EndSub

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

->

来源:http://www.tulaoshi.com/n/20160219/1606841.html

延伸阅读
酷盘PC版如何自动备份移动设备中的照片到酷盘   酷盘PC版自动备份移动设备中的照片到酷盘的方法如下: 1.安装支持照片导入功能的最新版酷盘PC客户端:https://www.kanbox.com/related/download#windows 2.运行酷盘之后,将手机或U盘等设备连接到PC,会弹出引导页面。 点击导入酷盘按钮开始导入,会在屏幕右下角出现...
Type RECT Left As Long Top As Long Right As Long Bottom As LongEnd TypeDeclare Function ClipCursor Lib "user32" (lpRect As Any) As LongDeclare Function ShowCursor Lib "user32" (ByVal bShow As Long) As LongDeclare Function SetCursorPos Lib "user32" (ByVal x As L...
添加MIDP 2.0的Push注册特征到你的设备应用程序中 摘  要 有些时候,对于一个企业级移动应用程序,从服务器将信息推向移动设备,并且自动激活一个已安装的移动应用程序使其进行必要的处理是非常重要的。由短信服务(SMS)作为推信息的协议,使用push注册机制可以让使用Mobile Information Device Profile 2.0的Java微小版本应用程...
标签: 电脑入门
我们常常在移动硬盘中存放大量的文件,其中必然有一些比较重要和私密的文件,那么如何保证文件的安全,本教程为大家介绍一下如何使用U盘超级加密3000来加密移动硬盘,保护文件安全。 1、下载U盘超级加密3000。 下载的应该是一个压缩包,打开后,你可以看到里面有一个ude.exe的文件,你把这个文件解压缩到你需要加密的U盘或移动硬盘上就可...

经验教程

364

收藏

65
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部