想自动点击外部的一个软件的按钮,窗体能找到,用SPY++找出了按钮的名称,可是在代码上为什么找不到
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 Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202Private Sub Command1_Click()
Dim tWnd1 As Long, tWnd2 As Long
    tWnd1 = FindWindow(vbNullString, "MySQL ODBC 3.51 Driver")
    If tWnd1 <> 0 Then '找到窗体
        tWnd2 = FindWindowEx(tWnd1, 0, 0, "&Next >")
        If tWnd2 <> 0 Then '找到按钮
         '走不到这里来
        SendMessage tWnd2, bm_click, ByVal 0&, ByVal 0&
        End If
    End If
End Sub

解决方案 »

  1.   

    我认为是:tWnd2 = FindWindowEx(tWnd1, 0, 0, "&Next >")的问题,具体问题出在:&Next >上,这个是控件的Caption属性,而非名称
      

  2.   

    tWnd2 = FindWindowEx(hwnd, 0&, vbNullString, "&Next >")
      

  3.   

      tWnd1 = FindWindow(vbNullString, "MySQL ODBC 3.51 Driver")
        If tWnd1 <> 0 Then '找到窗体
        tWnd1 = FindWindow("#32770", vbNullString)
        If tWnd1 <> 0 Then MsgBox "找到位置"
            tWnd2 = FindWindowEx(tWnd1, 0, "Button", "&Next >")
            If tWnd2 <> 0 Then '找到按钮
            MsgBox "找到按钮"
             '走不到这里来
            SendMessage tWnd2, BM_CLICK, 0, 0
            End If
        end if
    原来还有个子窗体卡在中间,所以找不到按钮,现在按钮是找到了,可是没法点击,不知道是什么问题