使用VBScript关闭应用程序

使用VBScript关闭应用程序,vbscript,Vbscript,我试图打开和关闭一个应用程序。 我试着这样做: Dim App1 Set App1 = CreateObject("WScript.Shell") App1.Run("firefox") App1.Quit Firefox将打开,但不会关闭 错误消息: 对象不支持此属性或方法 我提到 请告诉我关闭应用程序的过程。Firefox不是COM对象。没有Firefox COM对象。Firefox不希望您使用COM。或净。或者微软。这就是为什么您不能创建Firefox对象,所以您创建了WScript.

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

Dim App1 
Set App1 = CreateObject("WScript.Shell")
App1.Run("firefox")
App1.Quit
Firefox将打开,但不会关闭

错误消息:

对象不支持此属性或方法

我提到


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

Firefox不是COM对象。没有Firefox COM对象。Firefox不希望您使用COM。或净。或者微软。这就是为什么您不能创建Firefox对象,所以您创建了WScript.Shell对象

Shell没有quit方法。如果它真的这么做了,那也无助于杀死Firefox


这是一种从VBS使用WMI启动,然后杀死Firefox之类的进程的方法。

如果您希望能够以这种方式终止进程,则需要使用
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对象-上面的两种方法对我很好,所以我没有尝试。 您可以找到一个示例:


  • 以下是另一种VBScript实现:

    strComputer=“”
    设置objWMIService=GetObject(“winmgmts:_
    &“{impersonationLevel=impersonate}!\\”&strComputer&“\root\cimv2”)
    设置colProcessList=objWMIService.ExecQuery_
    (“从Win32_进程中选择*,其中名称='Notepad.exe')
    对于colProcessList中的每个objProcess
    objProcess.Terminate()
    下一个
    
    这个例子做得很好:

    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
    

    这对我有用。我只是想添加这个,因为答案从未被排除在外,但我的第二次搜索“vbscript启动应用程序并关闭”。但它不能关闭现有应用程序吗?你说的“关闭现有应用程序”是什么意思?它终止通过
    Exec
    启动的进程。它在HTA中不起作用。我该怎么办??请帮忙。@Arunpandiarajen如果这在你的HTA中不起作用,你就做错了。请发布一个新问题,并附上您的代码和更详细的问题描述。第三种方法:在For Each循环中使用
    objProcess.Terminate()
    我们能否关闭以前打开的应用程序(也由VBScript打开)?(在前台运行的应用程序)退出vbscript应用程序将只是一个
    Wscript.Quit
    ——因此该部分实际上不适用。Firefox不是vbscript应用程序。欢迎使用堆栈溢出!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满您的代码,这会降低代码和解释的可读性!。
    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