我正在使用Vb2010和Windows7。
我正在尝试创建一个单击另一个进程的程序,但是在单击和单击鼠标事件时遇到了一些麻烦。
实际上,当我右击然后单击鼠标时,鼠标的行为会很奇怪:左击和右击似乎会互换,因为左击会打开菜单,而右击却无能为力。
使它恢复正常的唯一方法是在物理上单击鼠标右键,然后单击鼠标左键,但是我需要程序自动执行此操作。有任何修复或解决方法吗?谢谢。
要重现此问题,可以在vb.net中创建一个带有button1的表单,然后粘贴此代码(然后运行调试并单击该按钮),或者可以从此处下载已编译的程序。
Public Class Form1
Private Declare Sub mouse_event Lib "user32" (ByVal dwflags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cbuttons As Integer, ByVal dwextrainfo As Integer)
Private Const mouseclickdown = 2
Private Const mouseclickup = 4
Private Const rightclickdown = 8
Private Const rightclickup = 10
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
System.Threading.Thread.Sleep(200)
Cursor.Position = New Point(650, 350)
System.Threading.Thread.Sleep(200)
mouse_event(rightclickdown, 0, 0, 0, 0)
System.Threading.Thread.Sleep(200)
mouse_event(rightclickup, 0, 0, 0, 0)
System.Threading.Thread.Sleep(200)
Cursor.Position = New Point(500, 200)
System.Threading.Thread.Sleep(200)
mouse_event(mouseclickdown, 0, 0, 0, 0)
System.Threading.Thread.Sleep(200)
mouse_event(mouseclickup, 0, 0, 0, 0)
System.Threading.Thread.Sleep(200)
End Sub
End Class
rightclickup
应该具有0x0010
(来源:http : //msdn.microsoft.com/en-us/library/windows/desktop/ms646260 (v= vs.85 ) .aspx)的值,十六进制为10。十进制为16。
Public Class Form1
Private Declare Sub mouse_event Lib "user32" (ByVal dwflags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cbuttons As Integer, ByVal dwextrainfo As Integer)
Private Const mouseclickdown = 2
Private Const mouseclickup = 4
Private Const rightclickdown = 8
Private Const rightclickup = 16
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
System.Threading.Thread.Sleep(200)
Cursor.Position = New Point(650, 350)
System.Threading.Thread.Sleep(200)
mouse_event(rightclickdown, 0, 0, 0, 0)
System.Threading.Thread.Sleep(200)
mouse_event(rightclickup, 0, 0, 0, 0)
System.Threading.Thread.Sleep(200)
Cursor.Position = New Point(500, 200)
System.Threading.Thread.Sleep(200)
mouse_event(mouseclickdown, 0, 0, 0, 0)
System.Threading.Thread.Sleep(200)
mouse_event(mouseclickup, 0, 0, 0, 0)
System.Threading.Thread.Sleep(200)
End Sub
End Class
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句