链接:
版权:此博客中的所有文章均符合“以2.5中国大陆相同的方式归因-非商业用途-共享”协议的条款。
有多个人问我如何使用VBS控制鼠标操作,例如:如何使用VBS获取鼠标指针的坐标位置?如何用VBS移动鼠标?如何使用VBS模拟鼠标的左键单击,左键单击和右键单击? ...

在Internet上找到的答案通常是无法实现VBS,或者需要第三方COM(ActiveX?)组件。我对第三方组件感到非常厌恶。没有使用第三方组件的可移植性,因为此组件可能未在其他人的系统中注册。我的建议是尽量不要在VBS代码中调用第三方组件,除非您编写的程序仅供您自己使用。 (顺便说一下,尽量不要使用不可靠的Sendkeys方法,原因没有解释)
好吧,那么废话,现在让我们来谈谈用VBS控制鼠标的方法。我写了一篇名为“ VBS调用Windows API函数”的文章。我以为既然可以调用API,那么用VBS控制鼠标并不容易吗?原来我错了。不知道真相的同学将永远是大多数,并且有许多不知道API是什么的VBSer。如果他们不发布真实的代码,他们将不会自己编写代码!
使用此代码的前提是您的系统上已安装Excel,因为使用了Excel.Application对象(如果您想认为这是第三方组件,我无话可说):

Option Explicit
Dim WshShell
Dim oExcel, oBook, oModule
Dim strRegKey, strCode, x, y
Set oExcel = CreateObject("Excel.Application") '创建 Excel 对象
set WshShell = CreateObject("wscript.Shell")
strRegKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\$\Excel\Security\AccessVBOM"
strRegKey = Replace(strRegKey, "$", oExcel.Version)
WshShell.RegWrite strRegKey, 1, "REG_DWORD"
Set oBook = oExcel.Workbooks.Add '添加工作簿
Set oModule = obook.VBProject.VBComponents.Add(1) '添加模块
strCode = _
"'Author: Demon" & vbCrLf & _
"'Website: http://demon.tw" & vbCrLf & _
"'Date: 2011/5/10" & vbCrLf & _
"Private Type POINTAPI : X As Long : Y As Long : End Type" & vbCrLf & _
"Private Declare Function SetCursorPos Lib ""user32"" (ByVal x As Long, ByVal y As Long) As Long" & vbCrLf & _
"Private Declare Function GetCursorPos Lib ""user32"" (lpPoint As POINTAPI) As Long" & vbCrLf & _
"Private Declare Sub mouse_event Lib ""user32"" Alias ""mouse_event"" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)" & vbCrLf & _
"Public Function GetXCursorPos() As Long" & vbCrLf & _
"Dim pt As POINTAPI : GetCursorPos pt : GetXCursorPos = pt.X" & vbCrLf & _
"End Function" & vbCrLf & _
"Public Function GetYCursorPos() As Long" & vbCrLf & _
"Dim pt As POINTAPI: GetCursorPos pt : GetYCursorPos = pt.Y" & vbCrLf & _
"End Function"
oModule.CodeModule.AddFromString strCode '在模块中添加 VBA 代码
'Author: Demon
'Website: http://demon.tw
'Date: 2011/5/10
x = oExcel.Run("GetXCursorPos") '获取鼠标 X 坐标
y = oExcel.Run("GetYCursorPos") '获取鼠标 Y 坐标
WScript.Echo x, y
oExcel.Run "SetCursorPos", 30, 30 '设置鼠标 X Y 坐标
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_ABSOLUTE = &H8000
'模拟鼠标左键单击
oExcel.Run "mouse_event", MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
'模拟鼠标左键双击(即快速的两次单击)
oExcel.Run "mouse_event", MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
oExcel.Run "mouse_event", MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
'模拟鼠标右键单击
oExcel.Run "mouse_event", MOUSEEVENTF_RIGHTDOWN + MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
'模拟鼠标中键单击
oExcel.Run "mouse_event", MOUSEEVENTF_MIDDLEDOWN + MOUSEEVENTF_MIDDLEUP, 0, 0, 0, 0
'关闭 Excel
oExcel.DisplayAlerts = False
oBook.Close
oExcel.Quit评论足够详细,您知道,我很少写评论。如果您仍然不了解,则需要提高您的水平!
相关文章:

VBS在Windows API函数Workbooks.Open中调用相对路径。 VBS模拟POST来上传文件。 VBS中没有vbHide常数。使用VBS实现繁体中文和简体中文之间的转换
随机文章:
Windows 7在桌面批处理技术内幕程序:IF命令中创建宽带连接快捷方式:MySQL Unicode支持批处理技术内幕程序:ECHO命令
本文于2011年5月10日星期二15:46发布,归类于“编程”。您可以通过RSS 2.0feed关注本文的评论。您可以,也可以从您的站点进行引用。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-355061-1.html
空军队有无数的英雄王海
真来再戏耍它一番
四叶草等你的电影哦