(VBS)当出现特定窗口时如何终止某个进程?

(VBS)当出现特定窗口时如何终止某个进程?

在我的 VBScript 中,我需要taskkill处理example.exe何时SPECIFICWINDOW出现(窗口的名称与进程名称不同)SPECIFICWINDOW并且需要在出现时准备好此命令。

我怎样才能做到这一点,因为我已经结束了.vbs

Dim oShell

Set oShell = WScript.CreateObject ("WScript.Shell")

oShell.Run "taskkill /fi ""WINDOWTITLE eq the example.exe""", , True

我的实际脚本是这样的:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """C:\Program Files (x86)\Example\example test.exe" 
WScript.Sleep 5000
WshShell.SendKeys "{ENTER}"
WScript.Sleep 3000
WshShell.SendKeys "{ENTER}"
WScript.Sleep 3000
WshShell.SendKeys "{ENTER}"

Const TimeToAllowActivationToComplete = 10000 ' 
Wscript.Sleep TimeToAllowActivationToComplete

Dim oShell
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.Run "taskkill /fi ""WINDOWTITLE eq example test""", , True

我设置了TimetoAllowActivationToComplete原因是我无法在特定窗口(“操作结束”)出现后执行任务示例 test.exe。

答案1

问题是,使用WINDOWTITLE过滤器时,您需要提供窗口标题(“操作结束”)不是可执行文件的名称。此外,如果窗口的名称发生变化或添加了额外信息,则eq可能会失败,因为部分匹配不相等。我认为您可以使用*部分匹配(cat*匹配“cat”、“catch”;*cat*匹配“cat”、“a cat”、“zcatapult”)

如果您想通过名称终止特定的可执行文件,那么您需要使用IMAGENAME过滤器。

文档

答案2

您可以AppActivate在循环中使用它来检查特定窗口。一旦找到,然后使用它TaskKill来终止 exe:

Set oWSH = WScript.CreateObject("WScript.Shell")
Do Until WindowFound
  WindowFound = oWSH.AppActivate("End of the Operation")
  WScript.Sleep 500
Loop
oWSH.Run "TaskKill /f /im example.exe",0,True

相关内容