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

标签 vbscript

我们有一个应用程序,当您与 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

另请参阅the Win32_Process class documentation .

关于VBScript/w AppActivate 用于应用程序的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17979824/

相关文章:

java - Runtime.exec() 中可以传递的参数的最大数量是多少?

vbscript - 如何在vbs中设置可以在调用批处理脚本时读取的环境变量

vbscript - 如何使用 vbscript 在一个用户表单中创建多个输入框

windows - 如何在批处理或 VBScript 中使用通配符搜索注册表中的键?

vbscript - 从 vbs 同步两个 .bat 的命令

internet-explorer - Internet Explorer 11 中的 VBScript 支持

javascript - 像谷歌一样经典的 ASP 自动建议

vbscript - 有没有办法让 MessageBox 在设定的时间间隔后自动关闭?

javascript - 如何避免使用无穷无尽的嵌套替换方法来缩写街道地址?

powershell - 通过 VBScript 和 PowerShell 使用 WMI 时的区别