求教:mouse event 事件执行单击无效。

genalii 2010-09-06 11:38:07
小弟在写一个程序,需要远程控制另外一台电脑。在测试模拟鼠标事件中,发现无法执行模拟单击。

代码如下:
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系统中。

求高手支招!谢谢。
...全文
484 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
崇崇 2012-05-13
  • 打赏
  • 举报
回复
你可以多写几行单击的代码,可能有的消息发送失败或其他原因到不了目标窗口,当你多写几个的时候,就可以了,例如:
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);
icansaymyabc 2010-09-06
  • 打赏
  • 举报
回复
VB 的 mouse_event 语句适用于适用标准windows消息处理程序的进程。像word之内的具有特殊消息处理程序的东西来说,你只能用更低级方法模拟鼠标事件,有的程序更是连低级的输入事件模拟都屏蔽了,得用硬件级的模拟才行。不懂的话上按键精灵论坛去学学

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧