VB6自动单击程序启动但不';停不下来

VB6自动单击程序启动但不';停不下来,vb6,mouseevent,Vb6,Mouseevent,我正在用VB6编写一个自动点击程序。这个想法是,如果我在按住鼠标左键的同时按住鼠标右键,它会自动开始点击,直到你放开其中一个 Option Explicit Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Lon

我正在用VB6编写一个自动点击程序。这个想法是,如果我在按住鼠标左键的同时按住鼠标右键,它会自动开始点击,直到你放开其中一个

Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
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 Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Dim lefter As Boolean, righter As Boolean
Public Sub LeftClick()
    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub
Private Sub Form_Load()
    lefter = False
    righter = False
    Timer1.Interval = 80
End Sub
Private Sub Timer1_Timer()
If GetAsyncKeyState(2) = 0 Then
    righter = False
Else: righter = True
End If
If GetAsyncKeyState(1) = 0 Then
    lefter = False
Else: lefter = True
End If
If lefter = True Then
    If righter = True Then
        LeftClick
    End If
End If
End Sub
计时器1每80毫秒触发一次

在我试图通过释放鼠标左键(同时继续按住鼠标右键)来阻止它之前,这个程序运行得非常好。一旦启动,程序似乎会完全忽略它

相对而言,这几乎不是一个问题,也很容易解决,但我宁愿修复它,这样我就不必再解决它了


提前感谢。

GetAsyncKeyState的返回值该键当前是否已按下,以及自上次调用以来是否已按下。如果您只需要知道钥匙当前是否已关闭,请尝试以下操作:

Option Explicit

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub Timer1_Timer()
Dim righter As Boolean, lefter As Boolean
If GetAsyncKeyState(2) = 0 Then
    righter = False
Else: righter = True
End If
If GetAsyncKeyState(1) = 0 Then
    lefter = False
Else: lefter = True
End If
If lefter = True Then
    If righter = True Then
        LeftClick
    End If
End If
End Sub
Sub LeftClick()
  Debug.Print Timer & " LeftClick"
End Sub

这样做应该可以:

If GetAsyncKeyState(1) And GetAsyncKeyState(2) Then LeftClick
如果您添加:

Debug.Print Rnd

对于您的
公共子菜单LeftClick()
,您会注意到它在本应触发的时候触发。您必须寻找另一种发送鼠标事件的方法。

信息很好,但代码不起作用;当我在右键点击检测器上使用它时,它没有什么不同,当我在左键点击检测器上使用它时,它不再检测到左键点击:/真的吗?我刚刚在我的VB6 IDE中试用了它,效果很好。已编辑我的答案以显示完整的代码。我在十六进制常量中添加了一个尾随符号,并显式声明了变量。另外,您还没有发布API调用的声明-也请检查。这是我的第一次尝试,但程序自动单击一次,然后停止。我只是这样做了,它似乎工作了。我猜LeftClick正在干扰。哦,不,问题不是我无法启动程序——问题是我无法让它停止。通过在按住right click(我需要做的一个动作)的同时释放left click,程序将继续单击,即使left click不再处于关闭状态。