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 & "です" |
|