'hahaha为窗口的标题 得到窗口句柄
winwnd = FindWindow(vbNullString, hahaha)      
   
'取按钮的句柄  Command1为另一个窗体按键的caption
bn_hwnd = FindWindowEx(winwnd, 0, 0, "Command1") 这里面 得到的 bn_hwnd句柄为0请问错在什么地方????下面用
PostMessage
谁能给个完整的代码向一个窗体 hahaha 的按键Command1发送一个 回车

解决方案 »

  1.   

    Option ExplicitPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Const WM_LBUTTONDOWN = &H201
    Private Const WM_LBUTTONUP = &H202Private Sub Command1_Click()
        Dim h As Long
        Dim h2 As Long
        h = FindWindow(vbNullString, "abc")
        h2 = FindWindowEx(h, 0, vbNullString, "Command1") '当API的函数的参数是字符串,而你又不需要传递参数时必须使用vbNullString
        SendMessage h2, WM_LBUTTONDOWN, 0, ByVal 0&
        SendMessage h2, WM_LBUTTONUP, 0, ByVal 0&
        SendMessage h2, WM_LBUTTONDOWN, 0, ByVal 0&
        SendMessage h2, WM_LBUTTONUP, 0, ByVal 0&
        '不知道为什么要发送两次鼠标按下和鼠标抬起事件才起作用,纳闷
    End Sub
      

  2.   

    '不知道为什么要发送两次鼠标按下和鼠标抬起事件才起作用,纳闷dim ClickIt as long
    ClickIt& = SendMessage(Button&, WM_KEYDOWN, VK_SPACE, vbNullString)
    ClickIt& = SendMessage(Button&, WM_KEYUP, VK_SPACE, vbNullString)
      

  3.   

    是么?  那就先SendMessage(Button&, WM_SETSTATE,TRUE, vbNullString)