2016-09-21 2 views
3

프로세스 ID가 있는지 여부를 알아야합니다. 코드 지금까지 : 내가있는 MsgBoxVB6 프로세스 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 

나는 "이"문을 꺼내 그것을 메모장을 열고 있고 프로세스 ID와있는 MsgBox을 보여 주면, 그 다음 성공적으로 메모장을 죽일 것이다

하지만 "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 
시도