none
VBScriptの終了処理フックについて RRS feed

  • 質問


  • VBScript自身が強制終了されたことを検知し、終了処理を実行することはできないでしょうか?

    現在、タスクスケジューラにVBScriptを起動するタスクを登録し、そのVBScript内で別プログラム(MS-DOSバッチ)を起動するシステムを作っています。

    このタスクを実行した後に、実行中の状態で終了を選択すると、VBScriptは終了しますがその内部で起動した別プログラムは終了せず浮いてしまいます。

    そのため、タスク終了時にVBScriptが別プログラムも終了するようにしたいのですがこのようなことは実現可能なのでしょうか?

    環境:Windows7 Professional  バージョン6.1(ビルド 7601: Service Pack 1)

    2013年7月10日 2:30

回答

  • 根本的な問題点が間違っていました。

    タスクスケジューラーからタスクの終了を選んでも、そもそもVBScript自体を終了できていませんでした。

    タスク経由でなくMS-DOSプロンプト上でVBScriptを起動し、Ctrl+Cなどで強制終了すると、別プログラムも同時に終了しました。

    お騒がせいたしました。

    タスクから終了できない点を別途調査致します。

    • 回答としてマーク sakamotodesu 2013年7月10日 8:56
    2013年7月10日 8:55

すべての返信

  • VBScriptから別のプログラムをどのように起動しているのでしょうか?

    WScript.Shell.Runを使っているのであれば、bWaitOnReturnにtrueを指定することで起動したプログラムの終了を待つことができます。

    2013年7月10日 4:51
  • 返信ありがとうございます。

    WScript.CreateObject("WScript.Shell")でbatファイルを起動しています。

    Set objWshShell = WScript.CreateObject("WScript.Shell")
    strCmdLine = " ... "
    Set objExecCmd = objWshShell.Exec(strCmdLine)
    Do While objExecCmd.Status = 0
         WScript.Sleep(1000)
    Loop
    exitCode = objExecCmd.ExitCode
    

    WScript.Shell.Runを使用すると、VBScriptがタスクスケジューラから終了されたときに別プログラムも終了するのでしょうか?

    知りたいポイントは別プログラムの待ち合わせ処理ではなく、VBScriptが終了させられたときに、待ち合わせしている別プログラムも終了する方法があるのかどうか、になります。

    2013年7月10日 8:50
  • 根本的な問題点が間違っていました。

    タスクスケジューラーからタスクの終了を選んでも、そもそもVBScript自体を終了できていませんでした。

    タスク経由でなくMS-DOSプロンプト上でVBScriptを起動し、Ctrl+Cなどで強制終了すると、別プログラムも同時に終了しました。

    お騒がせいたしました。

    タスクから終了できない点を別途調査致します。

    • 回答としてマーク sakamotodesu 2013年7月10日 8:56
    2013年7月10日 8:55