Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA-如何在不移动鼠标/光标的情况下单击给定位置?(绕过Silverlight弹出式安全消息)_Vba_Silverlight_Sendmessage - Fatal编程技术网

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

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

你好

我有一个代码,可以从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

让我问你:你想完成什么?你试过查看HTML页面吗?您可以使用html元素查询和接收数据,而无需单击。使用API SendMessage我认为是更好的解决方案:我宁愿说不。在Microsoft环境中,有数千个API用于控制每个应用程序和系统的一部分,几乎从来没有必要使用诸如发送按键或移动鼠标之类的残忍手段来实现自动化。跟随@JLILIAmen,说出你想做什么,因为几乎可以肯定有更好的解决方案。嗨,@JLILIAmen。我想要发送鼠标单击的是Silverlight弹出式安全消息,它无法在HTML元素中捕获,关闭弹出式安全消息的唯一方法是向弹出式消息发送鼠标左键单击。您好,@Matteo NNZ,我不认为我已经尝试了所有可能的解决方案,但移动鼠标到弹出的安全消息,并发送鼠标点击它做的工作。但我要尝试的是在不移动鼠标光标的情况下单击弹出的安全消息。我想这个窗口是否有一个进程?您是否能够打开任务管理器并识别其名称?原因如果是,您可以通过查询系统进程而不是用鼠标单击来终止进程。