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