如何通过vbscript获取正在运行的应用程序名

如何通过vbscript获取正在运行的应用程序名,vbscript,Vbscript,我想通过vbscript获取正在运行的应用程序的名称列表,并通过其主窗口标题终止该应用程序。这些应用程序应列在任务管理器->应用程序选项卡上 像这样: 从web上搜索后,我找到了类似以下内容的vbscript: 此vbscript列出了任务管理器->进程标记下的所有进程名称,如下所示: 这不是我想要的。 我还发现: 'FUNCTION Function ListApplicationRunning() 'This function can report names from 'Task

我想通过vbscript获取正在运行的应用程序的名称列表,并通过其主窗口标题终止该应用程序。这些应用程序应列在
任务管理器->应用程序选项卡上


像这样:

从web上搜索后,我找到了类似以下内容的vbscript:

此vbscript列出了
任务管理器->进程标记下的所有进程名称,如下所示:

这不是我想要的。

我还发现:

'FUNCTION
Function ListApplicationRunning()
'This function can report names from
'TaskManager -> Application

    Set Word = CreateObject("word.application") 
    For Each x In Word.Tasks
        WScript.Echo x.Name
    Next 
    Word.Quit 
    Set Word = Nothing 
End Function
这确实给了我想要的,但问题是我要运行此脚本的服务器没有用于vbscript的
Word
,因此没有
Word.application
,我无法为其安装一个。


我的问题是如何获取应用程序名并以该名称终止应用程序?我不确定是否可以只使用vbscript,可能是
vbscript
cmd
的组合也可以。

在vbscript中,我们可以做类似的事情,请尝试一下:

Option Explicit
Call KillProcessbyName("common-api.jar")
'*********************************************************************************
Sub KillProcessbyName(FileName)
    On Error Resume Next
    Dim WshShell,strComputer,objWMIService,colProcesses,objProcess
    Set WshShell = CreateObject("Wscript.Shell")
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process")
    For Each objProcess in colProcesses
        If InStr(objProcess.CommandLine,FileName) > 0 Then
            If Err <> 0 Then
                MsgBox Err.Description,VbCritical,Err.Description
            Else
                objProcess.Terminate(0) 
            End if
        End If
    Next
End Sub
'**********************************************************************************
选项显式
调用KillProcessbyName(“common api.jar”)
'*********************************************************************************
子KillProcessbyName(文件名)
出错时继续下一步
Dim WshShell、strc计算机、objWMIService、COLPROCESS、objProcess
设置WshShell=CreateObject(“Wscript.Shell”)
strComputer=“”
设置objWMIService=GetObject(“winmgmts:{impersonationLevel=impersonate}!\\”&strComputer&“\root\cimv2”)
设置colprocesss=objWMIService.ExecQuery(“从Win32_进程中选择*)
对于COLJP进程中的每个OBJP进程
如果InStr(objProcess.CommandLine,FileName)>0,则
如果错误为0,则
MsgBox错误说明,VbCritical,错误说明
其他的
OBJ进程终止(0)
如果结束
如果结束
下一个
端接头
'**********************************************************************************

看看是否解决了您的问题。对不起,您的脚本将给我进程列表,这不是我想要的。非常感谢。所示代码允许您检索窗口的标题(任务列表输出中的最后一列或代码中的
task(8)
)。现在,您可以在
taskkill
中使用PID(
task(1)
),或通过
WMI
查询找到进程,并调用进程的
Terminate
方法。@MCND我明白您的意思,但我的应用程序无法通过
tasklist
列出。我终于用C++完成了我的任务。非常感谢。谢谢。我尝试了这个脚本,但是这个脚本给了我进程列表,这不是我想要的。好的,它不是vbscript,但它可以工作。
Option Explicit
Call KillProcessbyName("common-api.jar")
'*********************************************************************************
Sub KillProcessbyName(FileName)
    On Error Resume Next
    Dim WshShell,strComputer,objWMIService,colProcesses,objProcess
    Set WshShell = CreateObject("Wscript.Shell")
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process")
    For Each objProcess in colProcesses
        If InStr(objProcess.CommandLine,FileName) > 0 Then
            If Err <> 0 Then
                MsgBox Err.Description,VbCritical,Err.Description
            Else
                objProcess.Terminate(0) 
            End if
        End If
    Next
End Sub
'**********************************************************************************
FOR /F "usebackq tokens=1-2" %i IN (`tasklist ^|findstr /b "notepad"`) DO taskkill /PID %j