【问题标题】:VB6 how to check if a Process ID has been terminatedVB6如何检查进程ID是否已终止
【发布时间】:2016-09-21 10:45:10
【问题描述】:

我需要知道进程 ID 是否存在。到目前为止的代码:

Option Explicit

Dim WshShell As Object
Dim EngineRun As Object

Sub main()

Set WshShell = CreateObject("WScript.Shell")
Set EngineRun = WshShell.Exec("notepad.exe")

MsgBox EngineRun.ProcessID

If EngineRun.ProcessID = True Then
    WshShell.run "TASKKILL /F /IM " & EngineRun.ProcessID, , True
    MsgBox EngineRun.ProcessID & (" terminated")
Else
    MsgBox EngineRun.ProcessID & (" does not exist")
End If
End Sub

如果我取出“If”语句并让它打开记事本并显示一个带有进程 ID 的 MsgBox,然后当我单击“确定”到 MsgBox 时,它将成功杀死记事本

但使用“If”语句,无论记事本是否打开,都会显示“不存在”MsgBox。如果它是打开的,它会成功杀死它,然后显示“不存在”的MsgBox,而不是“终止”的MsgBox。

非常感谢任何想法!

【问题讨论】:

    标签: process vb6 terminate


    【解决方案1】:

    试试这个

    Option Explicit
    
    Dim WshShell As Object
    Dim EngineRun As Object
    Dim objWMIService As Object
    Dim colProcessList As Object
    
    Sub Main
    
       Set WshShell = CreateObject("WScript.Shell")
       Set EngineRun = WshShell.Exec("notepad.exe")
    
       MsgBox EngineRun.ProcessID
    
       Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
       Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where ProcessID = " & EngineRun.ProcessID)
    
       If colProcessList.Count = 1 Then
           WshShell.run "TASKKILL /F /IM " & EngineRun.ProcessID, , True
           MsgBox EngineRun.ProcessID & (" terminated")
       Else
           MsgBox EngineRun.ProcessID & (" does not exist")
       End If
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 2020-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      相关资源
      最近更新 更多