如何通过 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 代码杀死任务管理器进程?的主要内容,如果未能解决你的问题,请参考以下文章