2016-09-21 2 views
3

プロセスIDが存在するかどうかを知る必要があります。コード今のところ:私はメッセージボックスVB6プロセスIDが終了したかどうかをチェックする方法

に[OK]をクリックしたときに

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 

私は「もし」の文を取り出し、それを開いてメモ帳を持っているし、プロセスIDを持つメッセージボックスを表示した場合、それは、成功したメモ帳を殺します

"If"ステートメントでは、メモ帳が開いているかどうかにかかわらず、 "存在しない" MsgBoxが表示されます。開いている場合は、正常に終了し、「終了」MsgBoxの代わりに「存在しない」MsgBoxを表示します。

アイデアは大変ありがとうございます!

答えて

2

この

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 
をお試しください
関連する問題