6

我试图打开和关闭一个应用程序。我试过这样:

Dim App1 
Set App1 = CreateObject("WScript.Shell")
App1.Run("firefox")
App1.Quit

Firefox 会打开,但不会关闭。

错误信息:

对象不支持此属性或方法

我提到了 InDesign Scripting 如何退出应用程序(不是文档)

请告诉我关闭应用程序的程序。

4

5 回答 5

7

如果您希望能够以这种方式终止进程,则需要使用Exec方法而不是Run方法。

Set ff = CreateObject("WScript.Shell").Exec("firefox")
'you do stuff
ff.Terminate
于 2013-03-12T10:36:51.913 回答
3

我观察了几种方式:

  1. 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
    
  2. SendKeys- 适用于所有应用程序,如果已知窗口名称。

    Dim oShell : Set oShell = CreateObject("WScript.Shell")
    filename = "C:\Some_file.txt - Notepad"
    act = oShell.AppActivate(fileName)
    oShell.SendKeys "% C"
    
  3. 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
    
于 2015-03-16T11:36:09.990 回答
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
于 2016-09-01T18:24:08.947 回答
1

Firefox 不是 COM 对象。没有 Firefox COM 对象。Firefox 不希望您使用 COM。或网络。或者微软。这就是您无法创建 Firefox 对象的原因,因此您创建了 WScript.Shell 对象。

WScript.Shell 没有退出方法。如果是这样,它无助于杀死 Firefox。

这是一个使用 VBS 中的 WMI 启动,然后杀死 Firefox 等进程的示例。

于 2013-03-12T07:26:20.537 回答
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
于 2017-09-05T13:28:06.840 回答