2

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

Set objShell = CreateObject("WScript.Shell")
 objShell.AppActivate "notepad"

objShell.SendKeys "% r"

objShell.SendKeys "% x"

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

谢谢,布赖恩

4

1 回答 1

3

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

Option Explicit

Dim Shell, WMI, wql, process

Set Shell = CreateObject("WScript.Shell")
Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\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文档

于 2013-07-31T20:23:42.620 回答