如何通过 VBA 代码杀死任务管理器进程?

Posted

技术标签:

【中文标题】如何通过 VBA 代码杀死任务管理器进程?【英文标题】:How can I kill task manager processes through VBA code? 【发布时间】:2014-10-10 15:43:21 【问题描述】:

我正在尝试通过 VBA 终止某些进程。我有一个连接到市场数据总线的专有对象。通过 RTD,我将此对象称为 pub/sub 到总线。但是有时连接断开,我需要通过任务管理器终止进程。有没有办法通过 VBA 杀死进程?

谢谢

【问题讨论】:

哪些进程?我没有投反对票,但这些沉默的投反对票者通常会这样做,因为这是因为你到目前为止没有展示你的努力(或解释为什么你的谷歌结果没有帮助)来解决这个问题。它将帮助您和下一个人解决特定问题。请Check this out 【参考方案1】:

试试这个代码

Dim oServ As Object
Dim cProc As Variant
Dim oProc As Object

Set oServ = GetObject("winmgmts:")
Set cProc = oServ.ExecQuery("Select * from Win32_Process")

For Each oProc In cProc

    'Rename EXCEL.EXE in the line below with the process that you need to Terminate. 
    'NOTE: It is 'case sensitive

    If oProc.Name = "EXCEL.EXE" Then
      MsgBox "KILL"   ' used to display a message for testing pur
      oProc.Terminate()
    End If
Next

【讨论】:

更直接一点,你可以使用:Set cProc = oServ.ExecQuery("Select * from Win32_Process Where Name = 'EXCEL.EXE'") 只获取 Excel 进程。 errReturnCode Variable Not defined【参考方案2】:

再看一个例子:

Sub Test()
    If TaskKill("notepad.exe") = 0 Then MsgBox "Terminated" Else MsgBox "Failed"
End Sub

Function TaskKill(sTaskName)
    TaskKill = CreateObject("WScript.Shell").Run("taskkill /f /im " & sTaskName, 0, True)
End Function

【讨论】:

【参考方案3】:

你可以这样做:

Dim oServ As Object
Dim cProc As Variant
Dim oProc As Object

Set oServ = GetObject("winmgmts:")
Set cProc = oServ.ExecQuery("Select * from Win32_Process")

For Each oProc In cProc

    'Rename EXCEL.EXE in the line below with the process that you need to Terminate. 
    'NOTE: It is 'case sensitive

    If oProc.Name = "EXCEL.EXE" Then
      MsgBox "KILL"   ' used to display a message for testing pur
      oProc.Terminate  'kill exe
    End If
Next

【讨论】:

【参考方案4】:
Sub Kill_Excel()

Dim sKillExcel As String

sKillExcel = "TASKKILL /F /IM Excel.exe"
Shell sKillExcel, vbHide

End Sub

【讨论】:

请在您的代码中添加一些解释 - 对我来说,这看起来像是两年多前已经发布的答案

以上是关于如何通过 VBA 代码杀死任务管理器进程?的主要内容,如果未能解决你的问题,请参考以下文章

防止从任务管理器中杀死进程,反转

任务管理器杀死进程

像任务管理器(Windows 8)一样杀死进程,因为访问被拒绝

如何在应用程序被任务管理器杀死时保存数据?

如何防止任务管理器杀死我的 pythonw 脚本?

用任务管理器杀死时如何防止内存泄漏[重复]