VBScript / w AppActivate用于一个应用程序的多个实例

VBScript /w AppActivate for multiple instances of an application

我们有一个应用程序,当您从VMware View桌面断开连接时,该应用程序会将自己最小化到屏幕的左上角。因此,我编写了以下VBS,它将激活该应用程序并使其正常运行。

1
2
3
4
5
6
Set objShell = CreateObject("WScript.Shell")
 objShell.AppActivate"notepad"

objShell.SendKeys"% r"

objShell.SendKeys"% x"

但是某些用户打开了同一应用程序的多个实例。因此,我想知道如何让此脚本针对应用程序的每个实例执行?我假设我必须取消PID,因为每个实例都有自己的PID,但是我不确定如何执行此操作。

谢谢,
布莱恩


AppActivate接受PID。您可以使用WMI检索具有该名称的所有进程的PID。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Option Explicit

Dim Shell, WMI, wql, process

Set Shell = CreateObject("WScript.Shell")
Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\
oot\\cimv2")

wql ="SELECT ProcessId FROM Win32_Process WHERE Name = 'notepad.exe'"

For Each process In WMI.ExecQuery(wql)
    Shell.AppActivate process.ProcessId
    Shell.SendKeys"% r"
    Shell.SendKeys"% x"
Next

另请参见Win32_Process class文档。