例如:
有一个可执行程序:"c:\aa.exe"
在其界面上有两个按钮,其中一个是“连接”。
其title为“连接状态”现在,我想实现运行该程序,点击“连接”按钮,怎么实现?

解决方案 »

  1.   

    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag As Long) As Long
    Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As LongPrivate Const BM_CLICK As Long = &HF5&
    Private Const WM_GETTEXT As Long = &HDPrivate Sub Command1_Click()
    Dim hwnd As Long
    Dim mHwnd As Long
    Dim L As Long
    Dim tempstr1 As String * 256Shell "c:\aa.exe", vbNormalFocus
    Delay 2
    mHwnd = FindWindow(vbNullString, "连接状态")
    If mHwnd <> 0 Then
        hwnd = GetNextWindow(mHwnd, 5)
        Do
          If hwnd > 0 Then
            L = SendMessage(chHwnd, WM_GETTEXT, 256, ByVal tempstr1)
            If InStr(tempstr1, "连接") <> 0 Then
                L = SendMessage(chHwnd, BM_CLICK, 0, 0)
            End If
          End If
          hwnd = GetNextWindow(hwnd, 2)
        Loop While hwnd > 0Else
        MsgBox "找不到窗体"
    End If
    End Sub
    Public Sub Delay(PauseTime As Long)
    Dim Start As SingleStart = Timer
    Do While Timer < Start + PauseTime
          DoEvents
    Loop
    End Sub
      

  2.   

    发现在可见窗口和隐藏窗口中都不能发现该窗体,怎么办??
    属于那种运行程序的时候,按Ctrl+Alt+Del也看不到的。
    属于那种一运行就到托盘的那种,我想要的是在托盘上双击就会打开的那个窗体
      

  3.   

    mHwnd = FindWindow(vbNullString, "窗口的标题")
      

  4.   

    使用 这个函数试试看 他枚举所有的窗体 隐藏的也不例外
    Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
      

  5.   

    好像是一个类似msgbox函数的对话框,怎么办??
      

  6.   

    延时
    取得当前活动窗口的句柄发一个消息过去就行了呀
    SLEEP(100)
    SENDMESSAGE HWND,WM_CLOSE,0,0
    HWND 是当前活动窗口的句柄 ok