Visual Basic Tips


VBから起動したプログラムが終了したかどうか確認する(API)


Command1でメモ帳を起動し、その時のタスクIDを使用してプロセスハンドルを取得しています。この時、第二引数を”1”にしてプロセスハンドルを継承しています。Command2でこのプロセスハンドルを使用して終了状態を判定しています。


Dim
hProcess As Long

Private Sub
Command1_Click()
  
Dim lret As Long

  lret = Shell("c:\windows\notepad.exe", vbNormalFocus)
  hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 1, lret)
End Sub

Private Sub Command2_Click()
  
Dim lExitCode As Long
  
Dim lret As Long

  lret = GetExitCodeProcess(hProcess, lExitCode)
  
If lExitCode = STILL_ACTIVE Then
    MsgBox "起動されています"
  
Else
    lret = CloseHandle(hProcess)
    MsgBox "起動されていません"
  
End If
End Sub

'---------------------------------------------------------------
'
'---------------------------------------------------------------
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
'
Public Const PROCESS_QUERY_INFORMATION = &H400&
Public Const STILL_ACTIVE = &H103&


DownLoad vbtips052.lzh 2KB (VB6.0)