我们有一个应用程序,当您与 VMware View 桌面断开连接时,该应用程序会将自身最小化到屏幕的左上角。因此,我编写了以下 VBS,它将激活应用程序并将其最大化,运行良好。
Set objShell = CreateObject("WScript.Shell")
objShell.AppActivate "notepad"
objShell.SendKeys "% r"
objShell.SendKeys "% x"
但有些用户打开了同一应用程序的多个实例。所以我想知道如何让这个脚本为应用程序的每个实例执行?我假设我必须关闭 PID,因为每个实例都有自己的 PID,但我不确定如何执行此操作。
谢谢, 布赖恩
最佳答案
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
关于VBScript/w AppActivate 用于应用程序的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17979824/