小弟在写一模拟鼠标的程序.因为刚学不久.想从屏幕的上下左右移动.而且保持一直循环.知道关闭才停止.
刚开始我放了4个timer.但是觉得太麻烦了.所以写了下面这个代码.但是还是不实用.高手能不能帮我简化一下下面的代码.实现鼠标上下左右移动知道终止程序运行才停止.谢谢大家了
  Dim i   As Long
    For i = 1 To 10
        SetCursorPos 400, 206
        Sleep 1
    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
    Next
     For i = 1 To 10
        SetCursorPos 267, 328
        Sleep 1
    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
    Next
    For i = 1 To 10
        SetCursorPos 400, 453
        Sleep 1
    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
    Next
    For i = 1 To 10
      SetCursorPos 540, 329
        Sleep 1
    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
            Next

解决方案 »

  1.   

    Option Explicit
    Private Declare Function SetCursorPos Lib "user32.dll" (ByVal x As Long, ByVal y As Long) As Long
    Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
    Private Const MOUSEEVENTF_LEFTDOWN As Long = &H2
    Private Const MOUSEEVENTF_LEFTUP As Long = &H4
    Private Declare Sub mouse_event Lib "user32.dll" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)Private Sub Command1_Click()
        Command1.Enabled = False
        Dim varArray() As String, i, j, str As String
        str = "400,206,267,328,400,453,540,329"
        varArray = Split(str, ",")
        For i = 1 To 10
            For j = 0 To 6 Step 2
                SetCursorPos CInt(varArray(j)), CInt(varArray(j + 1))
                Sleep 2000
                mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
                mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
            Next
        Next
    End Sub
      

  2.   

    Private Sub Command1_Click()
        Command1.Enabled = False
        Dim varArray() As String, i, j, str As String
        str = "400,206,267,328,400,453,540,329"
        varArray = Split(str, ",")
        For i = 1 To 10
            For j = 0 To 6 Step 2
                SetCursorPos CInt(varArray(j)), CInt(varArray(j + 1))
                Sleep 500
                'mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
                'mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
            Next
        Next
        Command1.Enabled = True
    End Sub
      

  3.   

    循环变量到头后你们的代码没有把它置回初值,怎么可能循环不停呢,另外这种代码运行后你的窗体怎么关闭呢?100%BUSY啊。
    用TIMER吧,中间那些挂起进程的SLEEP就不要用了。