使用VBScript关闭应用程序

时间:2013-03-12 07:12:59

标签: vbscript

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

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

Firefox将会打开,但不会关闭。

错误讯息:

  

对象不支持此属性或方法

我提到InDesign Scripting how to quit application (not document)

请告诉我关闭申请的程序。

5 个答案:

答案 0 :(得分:7)

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

Set ff = CreateObject("WScript.Shell").Exec("firefox")
'you do stuff
ff.Terminate

答案 1 :(得分: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对象 - 上面两种方式对我有好处,所以我没试过。 您可以找到示例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
相关问题