プロセスハンドルをかえすShell関数をつくる

VBのShell関数は戻り値としてプロセスID(タスクID)をかえします。しかしAPI関数等を使う場合プロセスハンドルが必要となる場合があります。そこでプロセスハンドルをかえすShell関数、ShellExを作ろうと思います。

まずWin32API関数の定義をします。

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

Private Const PROCESS_QUERY_INFORMATION = &H400

つぎにShellEx関数を作ります。

Public Function ShellEx(ExeName As String, Optional Style As Long = vbMinimizedFocus) As Long

    ShellEx = OpenProcess(PROCESS_QUERY_INFORMATION , False, Shell(ExeName, Style))

End Function

使い方はShell関数と同様です。

使用例

Dim lngHandle as Long
lngHandle=ShellEx("Notepad.exe" , vbNormalFocus)
MsgBox "プロセスハンドルは" & lngHandle & "です"

 

戻る