适用于具有相同标题且在一个进程下的窗口的AppActivate函数

时间:2014-01-10 17:42:59

标签: vbscript

我使用一个非常简单的VBScript在多个屏幕之间切换,然后在暂停和继续之前刷新,但是我要切换的两个屏幕被命名为相同,任何帮助表示赞赏。

Option Explicit
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Do
    WScript.Sleep 3000
    WshShell.AppActivate("Inbox - Microsoft Outlook")
    WScript.Sleep 3000
    WshShell.AppActivate("CSE Task Monitor")
    WSHShell.SendKeys "{F5}" 
    WScript.Sleep 3000
    WshShell.AppActivate("website - Windows Internet Explorer")
    WSHShell.SendKeys "{F5}" 


Loop

谢谢大家。 史蒂夫

1 个答案:

答案 0 :(得分:1)

您应该使用ProcessId而不是Window Title。 我从exe文件名中获取进程ID。

Set WShell = CreateObject("WScript.Shell")
Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
wql = "SELECT ProcessId FROM Win32_Process WHERE Name = ProcessName.exe'"
i=0
For Each process In WMI.ExecQuery(wql)
   ProcessIdArray(i) = process.ProcessId
i = i + 1
Next

现在您拥有相同ProcessName.exe的进程ID数组,您可以使用

WshShell.AppActivate(ProcessIdArray(0))
WScript.Sleep 3000
WshShell.AppActivate(ProcessIdArray(1))