我写了一个程序,有一个事件是按钮的mousedown和mouseup控制的一个函数的执行和退出,我现在需要用程序的其他方式来模拟这两个过程应该怎么办?
我用     Const WM_LBUTTONDOWN = &H201
     Const WM_LBUTTONUP = &H202
   Dim Tmp
   Tmp = SendMessage(cmdTalk.hwnd, WM_LBUTTONDOWN, 1, ByVal 0&) '发送系统消息,模拟按键被按下(系统API函数)
'    End If
    
 '  Sleep (1000)
    
          ' Call cmdTalk_MouseUp(a, b, c, d)
       Tmp = SendMessage(cmdTalk.hwnd, WM_LBUTTONUP, 1, ByVal 0&)
    这种发送系统消息的机制,会导致发送和接受有延时,而且mousedown里边有个函数执行并没有因为按钮弹起而退出,而且中间的sleep并不会导致按钮的按下和弹起时间间隔。怎么解决呢?
我是不是需要控制指针到按钮上并且控制鼠标指针按下和释放的方式才可以实现??

解决方案 »

  1.   

    如果是同一个程序内,直接调用事件过程不就可以了,没必要用API
    如先修改事件函数为 Public
    Public Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ...
    End SubPublic Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ...
    End Sub
    调用时直接调用就可以了,如:
    Form1.Form_MouseDown(1,0,1,1)
    Form1.Form_MouseUp(1,0,1,1)
      

  2.   

    mousedown是个瞬间行为啊,我需要的是按住不放,等到我给他另外一个信号才会释放。这样调用也可以做到么?