gpt4 book ai didi

windows - WshShell.AppActivate 似乎在简单的 vbs 脚本中不起作用

转载 作者:可可西里 更新时间:2023-11-01 12:41:10 36 4
gpt4 key购买 nike

total vbs scripting newb 在这里。我正在尝试自动关闭某个打开的窗口,即一个名为 HostsMan 的程序。这是在 Windows 8.1 Pro 64 位上,这是我的脚本目前的样子:

Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate "HostsMan"
WshShell.SendKeys "%{F4}"

第二行好像不行。我知道第 3 行有效,因为它激活了 Windows 关机菜单。有什么我想念的吗?

更新/更多信息:手动输入 alt-F4 确实会关闭它,所以我知道这应该有效。我还用其他打开的窗口测试了这个脚本,它们关闭得很好。此外,HostsMan 以管理员权限打开,因此我尝试将脚本作为具有最高权限的任务集运行,以查看是否可以执行此操作,但仍然不行。但这确实适用于以管理员权限运行的其他打开的窗口。令人沮丧!

最佳答案

我也试过了,还是不行。窗口类一定有问题,也许 AppActivate 没有将其视为顶级窗口?

无论如何,AppActivate 还允许您传递进程 ID 而不是窗口标题。当我安装 HostsMan 时,进程名称是 hm.exe,因此我将在下面的示例中使用它。

Set Processes = GetObject("winmgmts:").InstancesOf("Win32_Process")

For Each Process In Processes
If StrComp(Process.Name, "hm.exe", vbTextCompare) = 0 Then

' Activate the window using its process ID...
With CreateObject("WScript.Shell")
.AppActivate Process.ProcessId
.SendKeys "%{F4}"
End With

' We found our process. No more iteration required...
Exit For

End If
Next

关于windows - WshShell.AppActivate 似乎在简单的 vbs 脚本中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23165377/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com