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 |
另请参见