为什么我取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
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
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我知道你的意思,你看看上面写的应该就好了
If Left$(WinText,3) = "计算器" Then