Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


66251 / 76734 ←次へ | 前へ→

【15048】Re:Shell関数で起動したファイルの終了
回答  ちゃっぴ  - 04/6/14(月) 13:19 -

引用なし
パスワード
   多分API使わないと無理ではないかと・・・

下のコードは、Shell関数の終了するまで待機させるものです。

GetExitCodeProcessでそのアプリケーションが終了しているか確認し、
終了していない場合、DoEvents関数でそのアプリケーションへ
CPU処理を戻してやっているものです。

強制終了もAPI使えば出来ますので、検索してみてください。

参考になるかと・・・

'API定義
Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Public Const PROCESS_QUERY_INFORMATION = &H400&

Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, _
lpExitCode As Long) As Long

Public Const STATUS_PENDING = &H103&
Public Const STILL_ACTIVE = STATUS_PENDING

Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long

'-------------------------------------------------------------------------
'[Shell関数が終了するまで待機]
'
'プロシジャー名   S_WaitProcess
'引数        lngProcessID  Shell関数の戻り値(プロセスID)
'-------------------------------------------------------------------------
Sub S_WaitProcess(lngProcessID As Long)
 
  Dim lngProcess As Long
  Dim lngExitCode As Long
  Dim rc As Long
  
  'プロセスIDからハンドルを取得
  lngProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 1, lngProcessID)
  Do
    '終了しているか確認
    rc = GetExitCodeProcess(lngProcess, lngExitCode)
    DoEvents   '処理を戻す
  Loop While lngExitCode = STILL_ACTIVE '終了するまでループ
  rc = CloseHandle(lngProcess) '後始末
End Sub
2 hits

【15044】Shell関数で起動したファイルの終了 IceMan 04/6/14(月) 12:46 質問
【15048】Re:Shell関数で起動したファイルの終了 ちゃっぴ 04/6/14(月) 13:19 回答
【15049】Re:Shell関数で起動したファイルの終了 ichinose 04/6/14(月) 13:37 発言
【15058】Re:Shell関数で起動したファイルの終了 IceMan 04/6/14(月) 16:59 お礼

66251 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free