我试图打开并关闭一个应用程序。 我试过这样:
Dim App1
Set App1 = CreateObject("WScript.Shell")
App1.Run("firefox")
App1.Quit
Firefox将会打开,但不会关闭。
错误讯息:
对象不支持此属性或方法
我提到InDesign Scripting how to quit application (not document)
请告诉我关闭申请的程序。
答案 0 :(得分:7)
如果您希望能够以这种方式终止流程,则需要使用Exec
方法而不是Run
方法。
Set ff = CreateObject("WScript.Shell").Exec("firefox")
'you do stuff
ff.Terminate
答案 1 :(得分:3)
我观察了几个方法:
taskkill
- 只有在我尝试杀死同一个进程时才会工作。
Dim oShell : Set oShell = CreateObject("WScript.Shell")
oShell.Run """C:\My_Scripts\ddl.exe"" -p1 -c"
'some code
oShell.Run "taskkill /f /im ddl.exe", , True
SendKeys
- 如果窗口名称已知,则适用于所有应用。
Dim oShell : Set oShell = CreateObject("WScript.Shell")
filename = "C:\Some_file.txt - Notepad"
act = oShell.AppActivate(fileName)
oShell.SendKeys "% C"
WMI对象 - 上面两种方式对我有好处,所以我没试过。 您可以找到示例here:
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Chrome.exe'")
Set oShell = CreateObject("WScript.Shell")
For Each objProcess in colProcessList
oShell.Run "taskkill /im chrome.exe", , True
Next
答案 2 :(得分:2)
以下是另一种VBScript实现:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Notepad.exe'")
For Each objProcess in colProcessList
objProcess.Terminate()
Next
答案 3 :(得分:1)
Firefox不是COM对象。没有Firefox COM对象。 Firefox不希望您使用COM。或者NET。或微软。这就是您无法创建Firefox对象的原因,因此您创建了一个WScript.Shell对象。
WScript.Shell没有退出方法。如果确实如此,它将无助于杀死Firefox。
这是example使用VBS中的WMI启动,然后杀死像Firefox这样的进程。
答案 4 :(得分:0)
这个例子的好工作:
Dim oShell : Set oShell = CreateObject("WScript.Shell")
oShell.Run """C:\My_Scripts\ddl.exe"" -p1 -c"
'some code
oShell.Run "taskkill /f /im ddl.exe", , True