VBA-如何在不移动鼠标/光标的情况下单击给定位置?(绕过Silverlight弹出式安全消息)
你好 我有一个代码,可以从IE窗口移动鼠标光标并发送鼠标左键单击VBA-如何在不移动鼠标/光标的情况下单击给定位置?(绕过Silverlight弹出式安全消息),vba,silverlight,sendmessage,Vba,Silverlight,Sendmessage,你好 我有一个代码,可以从IE窗口移动鼠标光标并发送鼠标左键单击 Function MoveMouseCursor(ByVal X As Long, ByVal Y As Long, hwnd As Long) If hwnd = 0 Then SetCursorPos X, Y Else Dim lpPoint As POINTAPI lpPoint.X = X lpPoint.Y = Y ClientToScreen hwnd, lpPoint
Function MoveMouseCursor(ByVal X As Long, ByVal Y As Long, hwnd As Long)
If hwnd = 0 Then
SetCursorPos X, Y
Else
Dim lpPoint As POINTAPI
lpPoint.X = X
lpPoint.Y = Y
ClientToScreen hwnd, lpPoint
SetCursorPos lpPoint.X, lpPoint.Y
mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0&
mouse_event MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
End If
End Function
我能够得到我想要发送鼠标点击的IE窗口的HWND。
我想做的是在不移动鼠标指针的情况下将鼠标单击发送到IE窗口,这样即使宏正在运行,我也可以使用鼠标。
到目前为止,在搜索时,我提出了这个代码,但我认为它还没有工作。我认为使用API SendMessage是更好的解决方案,但我无法让它发挥作用。希望有人能帮助我
这是到目前为止我的代码
Dim DaWord As Long
DaWord = MakeDWord(IEWin.Width / 2, IEWin.Height / 2)
Sleep 200
SendMessage hwnd, WM_LBUTTONDOWN, 0, ByVal DaWord
Sleep 200
SendMessage hwnd, WM_LBUTTONUP, 0, ByVal DaWord
Private Function MakeDWord(ByVal LoWord As Integer, ByVal HiWord As Integer) As Long
MakeDWord = (HiWord * &H10000) Or (LoWord And &HFFFF&)
End Function
让我问你:你想完成什么?你试过查看HTML页面吗?您可以使用html元素查询和接收数据,而无需单击。使用API SendMessage我认为是更好的解决方案:我宁愿说不。在Microsoft环境中,有数千个API用于控制每个应用程序和系统的一部分,几乎从来没有必要使用诸如发送按键或移动鼠标之类的残忍手段来实现自动化。跟随@JLILIAmen,说出你想做什么,因为几乎可以肯定有更好的解决方案。嗨,@JLILIAmen。我想要发送鼠标单击的是Silverlight弹出式安全消息,它无法在HTML元素中捕获,关闭弹出式安全消息的唯一方法是向弹出式消息发送鼠标左键单击。您好,@Matteo NNZ,我不认为我已经尝试了所有可能的解决方案,但移动鼠标到弹出的安全消息,并发送鼠标点击它做的工作。但我要尝试的是在不移动鼠标光标的情况下单击弹出的安全消息。我想这个窗口是否有一个进程?您是否能够打开任务管理器并识别其名称?原因如果是,您可以通过查询系统进程而不是用鼠标单击来终止进程。