投稿日 | : 2006/06/27(Tue) 11:25 |
投稿者 | : かずちん |
Eメール | : |
URL | : |
タイトル | : 他ハンドルの取得方法 |
いつもお世話になっています。
開発環境:Windows2000/XP,VB6.0(SP6)
http://www.bcap.co.jp/hanafusa/VBHLP/tap_kanren.htm
http://www.bcap.co.jp/hanafusa/VBHLP/tap_PrgEnd.htm
上記などを一通り目をとおしたのですが、上手く取得できていません。
===============================================================
'既存のプロセスオブジェクトのハンドルを取得(P665)
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
'指定のプロセスの終了コードを取得(P660)
Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, lpExitCode As Long) As Long
'開かれているオブジェクトのハンドルを解放する(P1252)
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Private Const PROCESS_QUERY_INFORMATION = &H400&
Private Const STILL_ACTIVE = &H103&
Public Sub ShellEnd(ProcessID As Long)
Dim hProcess As Long
Dim EndCode As Long
Dim EndRet As Long
'ハンドルを取得する
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 1, ProcessID)
MsgBox hProcess
'終わるまで待つ
Do
EndRet = GetExitCodeProcess(hProcess, EndCode)
DoEvents
Loop While (EndCode = STILL_ACTIVE)
'ハンドルを閉じる
EndRet = CloseHandle(hProcess)
End Sub
Sub Main
Dim ret1 As Long
ret1 = Shell(Environ("ComSpec") & " /c start C:\Test.xls")
ShellEnd (ret1)
MsgBox "Test", vbOKOnly
End Sub
===============================================================
上記だと上手くハンドルが取れずにExcelファイルを閉じる前にMsgboxが表示されてしまいました。
やりたい事は開いたExcelファイルを修正などをして閉じた後に、処理を引き続き行いたいのです。
開いたExcelファイルのハンドルを上手く取る方法はありますでしょうか?
又ネットワークドライブ先のExcelファイルでも正常にハンドルを取得できますでしょうか?
宜しくお願い致します。