VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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ファイルでも正常にハンドルを取得できますでしょうか?
宜しくお願い致します。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -