如何动态移动鼠标位置?
我想程序控制鼠标在程序窗口中的位置。

解决方案 »

  1.   

    '以下程式在.bas
    Type RECT
            Left As Long
            ToP As Long
            Right As Long
            Bottom As Long
    End Type
    Type POINTAPI
            X As Long
            Y As Long
    End TypeDeclare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
    Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Public Sub MoveCursor(FromP As POINTAPI, ToP As POINTAPI)
    Dim stepx As Long, stepy As Long, k As Long
    Dim i As Long, j As Long, sDelay As Long
    stepx = 1
    stepy = 1
    i = (ToP.X - FromP.X)
    If i < 0 Then stepx = -1
    i = (ToP.Y - FromP.Y)
    If i < 0 Then stepy = -1
    'Call EnableHook  '如果有Include htmapi53.htm的.bas时,会Disable Mouse
    For i = FromP.X To ToP.X Step stepx
        Call SetCursorPos(i, FromP.Y)
        Sleep (1) '让Mouse 的移动慢一点,这样效果较好
    Next i
    For i = FromP.Y To ToP.Y Step stepy
        Call SetCursorPos(ToP.X, i)
        Sleep (1)
    Next i
    'Call FreeHook 'Enable Mouse
    End Sub
    '以下程式在Form中,需3个Command按键
    Private Sub Command3_Click()
    Dim rect5 As RECT
    Dim p1 As POINTAPI, p2 As POINTAPI
    Call GetWindowRect(Command1.hwnd, rect5) '取得Command1相对於Screen的座标
    p1.X = (rect5.Left + rect5.Right) \ 2
    p1.Y = (rect5.ToP + rect5.Bottom) \ 2
    Call GetWindowRect(Command2.hwnd, rect5)
    p2.X = (rect5.Left + rect5.Right) \ 2
    p2.Y = (rect5.ToP + rect5.Bottom) \ 2Call MoveCursor(p1, p2) 'Mouse由Command1 ->Command2
    End Sub
      

  2.   

    只要SetCursorPos(X,Y)就可以了。
      

  3.   

    其实问题是这样的:
    我开始有一个窗体A,然后我双击窗体A上一个控件弹出一个窗体B
    当双击显示B后,如果鼠标位于B内,窗体B居然响应一个单击事件。
    我不想要这个单击事件,
    如何屏蔽它?????大侠帮忙,不过可以加分。
      

  4.   

    //当双击显示B后,如果鼠标位于B内,窗体B居然响应一个单击事件。我试过了,在DblClick里写代码,出现的窗体没有单击事件啊。你是不是把代码写到Click过程里了?
      

  5.   

    窗体可能没有响应Click事件,但是B中的MSHFlexGrid响应了(如果鼠标位于MSHFlexGrid中的话)