web-dev-qa-db-ja.com

VBAコードを使用してタスクマネージャープロセスを強制終了するにはどうすればよいですか?

VBAを介して特定のプロセスを強制終了しようとしています。マーケットデータバスに接続する独自のオブジェクトがあります。 RTDを介して、このオブジェクトをpub/subからバスに呼び出します。ただし、接続が切断され、タスクマネージャーを介してプロセスを強制終了する必要がある場合があります。 VBAを介してプロセスを強制終了する方法はありますか?

ありがとう

4
Chris Hanlon

このコードで試してください

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
12

もう1つの例を見てください。

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
7
omegastripes

この方法で実行できます。

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
1
user10769870
Sub Kill_Excel()

Dim sKillExcel As String

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

End Sub
0
Karuna Hebsur