小弟在写一个程序,需要远程控制另外一台电脑。在测试模拟鼠标事件中,发现无法执行模拟单击。代码如下:
Private 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)
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Const MOUSEEVENTF_LEFTDOWN = &H2 '  left button down
Private Const MOUSEEVENTF_LEFTUP = &H4 '  left button up代码如下:
Private Sub Timer1_Timer()
SetCursorPos 288, 718     '设置鼠标位置(1024X768)
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0    '单击时用左按键下or左按键上,双击时写两句
Timer1.Enabled = False
End Sub 确切来说,是测试的时候,单击暂停暴风影音可以实现,但是,在单击 word 文档的工具栏时就不行了。所有测试均在xp系统中。求高手支招!谢谢。

解决方案 »

  1.   

    VB 的 mouse_event 语句适用于适用标准windows消息处理程序的进程。像word之内的具有特殊消息处理程序的东西来说,你只能用更低级方法模拟鼠标事件,有的程序更是连低级的输入事件模拟都屏蔽了,得用硬件级的模拟才行。不懂的话上按键精灵论坛去学学
      

  2.   

    你可以多写几行单击的代码,可能有的消息发送失败或其他原因到不了目标窗口,当你多写几个的时候,就可以了,例如:
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, NULL);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, NULL);
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, NULL);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, NULL);
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, NULL);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, NULL);