• 解説

    Shell関数を使用しプログラムを実行すると、プログラムの実行開始直後に制御が戻ってきてしまいます。
    実行元のアプリケーションと同期する必要が無ければこのままで問題ありませんが、実行したアプリケーションから終了時に値を戻してほしい時や、そのアプリケーションを実行しないと作成されないデータがある場合などの場合は困ります。

    Shell関数を実行後にその処理が終了するまで待機するためにはプロセスを監視する必要があります。
    幸いShell関数はプロセスIDを返してくれますのでこれを利用します。

  • 手順

    1. 下記のAPIを定義します。
      OpenProcess
      GetExitCodeProcess
      CloseHandle
    2. Shell関数を使用しプロセスIDを取得します。
    3. [No.2]で取得したプロセスIDをOpenProcessに渡しプロセスハンドルを取得します。
    4. [No.3]で取得したプロセスハンドルをGetExitCodeProcessに渡しプロセスの状態を取得します。
      終了していない場合はループで[No.4]を繰り返します。
    5. 終了した場合は[No.3]で取得したプロセスハンドルをCloseHandleを使用して閉じます。

    ※AccessのVBAおよびAPIの知識が必要です。

  • 注意事項

    [No.4]のループではDoEventsを使用したりしてシステムの負荷を下げたほうがいいです。

説明がわからないなどありましたらお問い合わせでお知らせください。

ここに掲載された情報を使用したことによって発生した、いかなる損害に対しても
管理者である雅は一切責任を負いません。