【发布时间】:2015-04-20 21:10:54
【问题描述】:
我正在尝试制作一个宏来记录用户点击的内容,然后记录鼠标坐标和点击之间的延迟。这将在其他一些SendKey 更改后重复。如何检测宏运行时单击鼠标的时间?我已经知道如何获取坐标并记录延迟,但是检测鼠标点击的最佳方法是什么,以及保存所有这些信息的最佳方法是什么?一个文本文件?这是我使用的鼠标点击事件的 sn-p:
Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
Public pos As POINTAPI ' Declare variable
Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Public Const MOUSEEVENTF_LEFTDOWN = &H2
Public Const MOUSEEVENTF_LEFTUP = &H4
Public Const MOUSEEVENTF_RIGHTDOWN As Long = &H8
Public Const MOUSEEVENTF_RIGHTUP As Long = &H10
Public Sub SingleClick()
Dim xval, yval
xval = GetSetting("Will's Program Sheet", "DPS Calibration", "PROGRAM X")
yval = GetSetting("Will's Program Sheet", "DPS Calibration", "PROGRAM Y")
Select Case xval
Case Is = "" 'Runs calibrate if it can't find an xval
Call CALIBRATE
End
End Select
SetCursorPos xval, yval 'x and y position
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub
还有另一个调用SingleClick 的宏,它移动到一个常数x 和y,点击,做一些魔术,然后返回到宏开始之前的位置。所以重申一下,是否有一种简单或易于理解的方法来记录多次点击和点击之间的延迟并通过 Excel VBA 重播?
【问题讨论】:
-
我并不是要打破你的希望,但我认为这可能是不可能的。 Excel 没有我知道的 onmouseclick 事件。
-
user32 库呢?对于 Visual Studio,这是可能的,但为什么不是 Excel VBA? msdn.microsoft.com/en-us/library/aa231228(v=vs.60).aspx
-
您到底想达到什么目的?为什么要这样跟踪鼠标点击和坐标?
-
我正在使用 CNC 程序,需要按特定顺序保存刀具路径,我们必须为 2 台机器保存它。我希望 Excel 通过记录我所做的点击并在第二台机器上重播这些点击来自动化该过程。