VBA - 如何在不移动鼠标/光标的情况下单击给定位置? (到ByPass Silverlight弹出安全消息)

时间:2015-05-05 11:59:22

标签: 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
    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

0 个答案:

没有答案