想用sendmessage模拟鼠标左键单击,不知道为什么不行
模块中定义:
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202form代码:Private Sub Command1_Click()
MsgBox "zzzz"
End SubPrivate Sub Command2_Click()
tmp = SendMessage(Command1.hwnd, WM_LBUTTONDOWN, 0, 0)
'TickCount = GetTickCount()
'While GetTickCount() - TickCount < 200
'mp = DoEvents()
'Wend
tmp = SendMessage(Command1.hwnd, WM_LBUTTONUP, 0, 0)
End SubPrivate Sub Form_Load()End Sub

解决方案 »

  1.   

    刚才在别的论坛看见了类似文章,也是问这个,我试了一下,问题应该出在焦点上,首先呢,你应该把CMD2的CLICK事件中代码移到CMD2的MUOSEUP事件。然后在把输入焦点移动到CMD1之前,把焦点从CMD2上移开。这只是我的一个想法,没时间没写代码,你可以试试,我想不成功是和WINDOWS消息处理机制中焦点有关的。你可以试试另一种获得解决办法的途径,建立一个工程,弄一个按钮,用MSGHOOK.OCX截取这些消息,看看一个按钮被按下的时候到底发生了什么事情,有哪些消息进入,然后就可以依次SENDMESSAGE了。
      

  2.   

    以前讨论过,看这里:
    http://community.csdn.net/Expert/topic/4432/4432194.xml?temp=7.246035E-02
      

  3.   

    没这么麻烦,LZ你把SENDMESSAGE换成POSTMESSAGE就OK了。
      

  4.   

    to: province 换了还是不行啊
      

  5.   

    问题解决,把tmp = SendMessage(Command1.hwnd, WM_LBUTTONDOWN, 0, 0)
    改成SendMessage command1.hwnd, WM_LBUTTONDOWN, MK_LBUTTON, ByVal &H10001就可以实现了