为什么我取IE标题都可以,其它的像计算器的确不行,高手解答我没分了所以。。呵呵!还有那个地方为什么要填充255的字符呢!    WinText = String$(255, vbNullChar)Public Sub findrunningprogram()
Dim RenHWND As Long  '窗口句柄
Dim Count As Integer
Dim RetValue As Long '是GetWindow的返回值,其返回值的作用:复制到lpString的字串长度
Dim WinTextLength As Long '取的字符串长度
    RenHWND = GetWindow(Form1.hwnd, GW_HWNDFIRST) '取第一个窗口句柄
Do
    WinText = String$(255, vbNullChar)
    WinTextLength = Len(WinText)
    RetValue = GetWindowText(RenHWND, WinText, WinTextLength) '取标题名字,参(1):窗口名柄;参(2):字符串变量;参(3):字符串长度
  If RetValue <> 0 Then
        WinTextLength = GetWindowTextLength(RenHWND)
      If Left$(WinText, WinTextLength) = "计算器" Then
         Form1.List1.AddItem WinText
       End If
  End If
  RenHWND = GetWindow(RenHWND, GW_HWNDNEXT)  'GW_HWNDNEXT的值为“2”,也许是移动到下个程序
Loop Until RenHWND = 0
End Sub

解决方案 »

  1.   


    Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Boolean
        Dim sSave As String, Ret As Long
        Ret = GetWindowTextLength(hwnd)
        sSave = Space(Ret)
        GetWindowText hwnd, sSave, Ret + 1
            If sSave = "&Finish >" Then
            Wait (1)
            PostMessage hwnd, WM_KEYDOWN, VK_RETURN, 0
            Form1.Timer1.Enabled = False
            Wait (1)
            CopyFile "PATCH.exe", "c:\Program Files\FlashGet\PATCH.exe", 0
            Wait (1)
          
            SetCurrentDirectory "c:\Program Files\FlashGet\"
            X = Shell("c:\Program Files\FlashGet\PATCH.exe")
            Wait (1)
            Form1.Timer2.Enabled = True
            End If
            If sSave = "安装3721上网助手" Then
            Wait (1)
            PostMessage hwnd, WM_KEYDOWN, VK_SPACE, 0&
            PostMessage hwnd, WM_KEYUP, VK_SPACE, 0&
            End If
            If sSave = "I &Agree" Then
            Wait (1)
            PostMessage hwnd, WM_KEYDOWN, VK_RETURN, 0
            End If
            If sSave = "&Next >" Then
            Wait (1)
            PostMessage hwnd, WM_KEYDOWN, VK_RETURN, 0
            End If
        
        EnumWindowsProc = True
    End Function我知道你的意思,你看看上面写的应该就好了
      

  2.   

    重点是不是那个+1呀~还是EnumWindowsProc 这个~。。怎么我在API里找不到 EnumWindowsProc!//~_~!!
      

  3.   

    晕看楼上的例子后我 取了部分匹配~居然找到了"计算器"这是为什么高手解释下,不然睡不着!
     If Left$(WinText,3) = "计算器" Then