我试图打开和关闭一个应用程序。我试过这样:
Dim App1
Set App1 = CreateObject("WScript.Shell")
App1.Run("firefox")
App1.Quit
Firefox 会打开,但不会关闭。
错误信息:
对象不支持此属性或方法
我提到了 InDesign Scripting 如何退出应用程序(不是文档)
请告诉我关闭应用程序的程序。
我试图打开和关闭一个应用程序。我试过这样:
Dim App1
Set App1 = CreateObject("WScript.Shell")
App1.Run("firefox")
App1.Quit
Firefox 会打开,但不会关闭。
错误信息:
对象不支持此属性或方法
我提到了 InDesign Scripting 如何退出应用程序(不是文档)
请告诉我关闭应用程序的程序。
如果您希望能够以这种方式终止进程,则需要使用Exec
方法而不是Run
方法。
Set ff = CreateObject("WScript.Shell").Exec("firefox")
'you do stuff
ff.Terminate
我观察了几种方式:
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 对象 - 上面的 2 种方法对我很有用,所以我没有尝试。你可以在这里找到一个例子:
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
这是另一种 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
Firefox 不是 COM 对象。没有 Firefox COM 对象。Firefox 不希望您使用 COM。或网络。或者微软。这就是您无法创建 Firefox 对象的原因,因此您创建了 WScript.Shell 对象。
WScript.Shell 没有退出方法。如果是这样,它无助于杀死 Firefox。
这是一个使用 VBS 中的 WMI 启动,然后杀死 Firefox 等进程的示例。
这个例子做得很好:
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