在我的 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