2016-12-12 136 views
1

我想通过vbscript获取正在运行的应用程序的名称列表,并通过其主窗口标题来终止应用程序。这些应用程序应该在Task Manager -> Applications tab

像这样列出:
enter image description here
从网上搜索后,我发现的VBScript喜欢this
如何通过vbscript获取正在运行的应用程序名称

'FUNCTION 
Function ListProcessRunning() 
'This function can report names from 
'TaskManager -> Processes 
    sComputerName = "." 
    Set objWMIService = GetObject("winmgmts:\\" & sComputerName & "\root\cimv2") 
    sQuery = "SELECT * FROM Win32_Process" 
    Set objItems = objWMIService.ExecQuery(sQuery) 
    'iterate all item(s) 
    For Each objItem In objItems 
     WScript.Echo objItem.Name 
    Next 
End Function 

这VBScript的列表中的所有进程名称这是Task Manager -> Processes tag下像这个:
enter image description here
这不是我想要的。

我也发现了这一点:

'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 

这真的给我我想要的,但问题是我要运行此脚本没有Word所以没有word.application对于VBScript服务器,我不能够为它安装一个。

我的问题是如何获取应用程序名称并通过该名称杀死应用程序?我不确定是否可以只用vbscript做,可能是vbscriptcmd的组合也行。

+1

看看[这](http://stackoverflow.com/a/20398390/2861476)解决您的问题。 –

+0

对不起,你的脚本会给我一个进程列表,这不是我想要的。非常感谢你。 – sflee

+1

指定的代码允许您检索窗口的标题(任务列表输出中的最后一列或代码中的“任务(8)”)。现在,您可以在'taskkill'中使用PID('task(1)')或通过'WMI'查询定位进程并调用进程的Terminate'方法。 –

回答

1

在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 
'********************************************************************************** 
+0

谢谢我已经尝试过这个脚本,但是这个脚本给了我不想要的进程列表。 – sflee

相关问题