这段代码有什么办法:
completion_status
我希望它能够关闭所有正在运行的chrome实例,而不是像这个脚本那样只是静静地和优雅地关闭一个chrome窗口。
如果有一种简单的方法可以在没有使用此代码的循环的情况下关闭所有chrome窗口,那将是完美的。
我已经尝试过所有其他方法,但它们都没有正常关闭,(终止),或者它们显示某种命令提示符或加载栏。
如果没有循环就没有办法做到这一点,那就这样吧。
谢谢!
答案 0 :(得分:1)
我们可以使用WMI服务执行此操作。我们可以计算所有正在运行的chrome实例,然后一个接一个地静默杀死它。
希望这会有所帮助。它涉及循环。
Dim oShell, objWMIService, objProcess, colProcess, strComputer, processName,instances
strComputer = "."
instances = 0
processName = "chrome.exe"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process")
For Each objProcess in colProcess
If objProcess.Name = processName Then instances = instances + 1 'Incrementing Running Instances
Next
Set oShell = WScript.CreateObject ("WScript.Shell")
Do While instances > 0
oShell.Run "taskkill /im chrome.exe", 0, True 'Killing one instance at a time
instances = instances - 1
Loop
答案 1 :(得分:0)
担任此角色无需实例计数For Each
。它会遍历任务列表中的所有流程,并检查您在查询中提供的流程的名称,然后以您喜欢的方式处理该流程。如果您想杀死该进程,请使用Terminate
方法,这样更容易杀死一个进程名称的多个实例。
Dim objWMIService, objProcess, colProcess, strComputer
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process where name= 'chrome.exe'")
For Each objProcess in colProcess
objProcess.terminate()
Next
WScript.quit
OR 距查询样式不远:
Dim Processes,Process
Set Processes = GetObject("winmgmts:").InstancesOf("Win32_Process")
For Each Process In Processes
If StrComp(Process.Name, "chrome.exe", vbTextCompare) = 0 Then
Process.Terminate()
End If
Next
WScript.Quit
OR
Dim Processes,Process
Set Processes = GetObject("winmgmts:").InstancesOf("Win32_Process")
For Each Process In Processes
If Instr( 1, process.Name, "chrome", vbTextCompare ) > 0 Then
Process.Terminate()
End If
Next
WScript.Quit
答案 2 :(得分:0)
我使用以下代码,类似于Alt + F4
oShell.SendKeys "%{F4}"
您必须确保chrome是活动窗口。