Private Declare PtrSafe Function GetCursorPos Lib "user32" (ByVal lpPoint As LongPtr) As Long
#If Win64 Then Private Declare PtrSafe Function AccessibleObjectFromPoint Lib "Oleacc" (ByVal ptScreen As LongLong, ByRef ppacc As IAccessible, ByRef pvarChild As Variant) As Long #Else Private Declare PtrSafe Function AccessibleObjectFromPoint Lib "Oleacc" (ByVal x As Long, ByVal y As Long, ByRef ppacc As IAccessible, ByRef pvarChild As Variant) As Long #End If
Public Sub ExampleWankuma103689() Dim pos(0 To 1) As Long Dim endTime As Double
Dim accProp(0 To 2) As Variant Dim acc As Office.IAccessible Const CHILDID_SELF As Variant = &H0& Dim vnt As Variant vnt = CHILDID_SELF
'10 秒間繰り返し Dim msg As String endTime = Timer + 10# Do Until endTime <= Timer GetCursorPos VarPtr(pos(0)) msg = Format(endTime - Timer, "0.000") & "秒 (" & CStr(pos(0)) & ", " & CStr(pos(1)) & ")" Erase accProp On Error Resume Next #If Win64 Then Dim posXY As LongLong posXY = pos(1) * &H100000000^ Or CLngLng(pos(0)) AccessibleObjectFromPoint posXY, acc, vnt #Else AccessibleObjectFromPoint pos(0), pos(1), acc, vnt #End If If Not acc Is Nothing Then accProp(0) = Replace(acc.accName, vbNullChar, "") accProp(1) = Replace(acc.accValue, vbNullChar, "") accProp(2) = Replace(acc.accDescription, vbNullChar, "") Set acc = Nothing msg = msg & ",Name=[" & accProp(0) & "],Value=[" & accProp(1) & "],Description=[" & accProp(2) & "]" End If On Error GoTo 0 [Sheet1!A1].Value = msg DoEvents Loop End Sub