怎样才能使发送的回车键消息有效?(不要用sendkey或鼠标点击消息)
VB程序如下:Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Const WM_CHAR = &H102
Private Const WM_KEYDOWN = &H100Private Sub Command1_Click()
    SendMessage Command2.hwnd, WM_KEYDOWN, 13, &H11C0001
    SendMessage Command2.hwnd, WM_CHAR, 13, &H11C0001
End SubPrivate Sub Command2_Click()
    Text1.text = "已按下"
End Sub

解决方案 »

  1.   

    要发送的应该是BM_CLICK消息:Private Const BM_CLICK = &H00F5SendMessage Command2.hwnd, BM_CLICK, 0, 0
      

  2.   

    SendMessage(Button1.Handle,BM_Click,0,0) ;
      

  3.   

    哦,sysu(死树) 老师写了,我写错了:)一直弄不懂,系统消息中为何不加上一个 WM_Click ?
      

  4.   

    谢谢了!
    请问手工按下回车键时,除了发送WM_KEYDOWN、WM_CHAR、BM_CLICK三个消息之外,还有没有其他消息发出?
      

  5.   

    或者说有没有办法100%模拟手工按下回车键所发送的消息呢?
    另外我查了一下,发现BM_CLICK是模拟鼠标点击的动作,而不是按键动作,有没有办法通过模拟按键的动作使按钮生效呢?
      

  6.   

    还有 WM_KeyDown ,WM_KeyUp 消息用 KeyBd_Event() 模拟按键Keybd_Event(13,0,0,0) ; //按下回车
    Keybd_Event(13,0,2,0) ; //释放回车 
      

  7.   

    我希望用sendmessage模拟,因为它有hwnd参数,可以对后台程序有效。
    如果不计抬起的话,发送WM_KEYDOWN加WM_CHAR消息应该够了吧?
    为什么还不能完全模拟按下回车键的动作呢?
      

  8.   

    模拟按键一般都用的 Keybd_Event() 函数 , 楼主说的恐怕不是模拟按键吧
      

  9.   

    你的意思是说用sendmessage发送回车键的消息不可能使按钮生效吗?
    为什么呢?
      

  10.   

    这是因为你的程序里只处理了Click消息,你要加上KeyDown事件处理才能收到sendmessage发送的回车键消息:
    Private Sub Command2_KeyDown(Key: Word)  ‘ 忘了VB了,参数大概是这样写吧
        if Key = 13 then
          Text1.text = "已按下"
        end if
    End Sub
      

  11.   

    这就奇怪了,没加keydown事件处理程序时,为什么手动按回车键按钮就生效呢?
      

  12.   

    呵呵这个我也不懂:(
    我猜想是不是这样:按下回车后,经过消息循环中的TranslateMessage把它转换成BM_CLICK消息了?
    …………
      

  13.   

    高深啊!
    不懂,
    学习中ing