我正在使用Vb2010和Windows 7
我试图创建一个点击其他进程的程序,但我在左右点击事件上遇到了一些麻烦。
事实上,当我向右然后左键单击时,鼠标会表现得很奇怪:左右点击似乎会交换,因为左键单击将打开菜单,右键单击将不执行任何操作。
使其恢复正常的唯一方法是物理上正确然后左键单击,但我需要程序自动执行此操作。有任何修复或解决方法吗?感谢。
要重新创建此问题,您可以在vb.net中创建一个带有button1的表单并粘贴此代码(然后运行调试并单击按钮),或者您可以从here下载已编译的程序
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
答案 0 :(得分:0)
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