我们有一个应用程序,当您从VMware View桌面断开连接时,它将自身最小化到屏幕的左上角。所以我编写了以下VBS,它将激活应用程序并使其最大化,并且工作正常。
Set objShell = CreateObject("WScript.Shell")
objShell.AppActivate "notepad"
objShell.SendKeys "% r"
objShell.SendKeys "% x"
但是有些用户打开了同一个应用的多个实例。所以我想知道如何让这个脚本为应用程序的每个实例执行?我假设我必须关闭PID,因为每个实例都有自己的PID,但我不确定如何做到这一点。
谢谢, 布赖恩
答案 0 :(得分:2)
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