VBScriptでVB.NETのプログラム(EXEファイル)を起動し、VB.NETで「終了コード」を設定してみる。
また、呼び出し元のVBScriptで終了コードを取得し、Windowsの「イベントログ」に出力してみる。
なお、Visual Studioのバージョンは以下です。
- Visual Studio Professional 2012
VB.NETで終了コードを設定
終了コードは、「Environment」クラスの「ExitCode」プロパティに設定してやる。
VB.NETのソースコードはこちら。
Public Class ClsMain <STAThread()> _ Shared Sub Main() Try 'フォームの起動 Application.Run(New FrmTest) '終了コードを設定 Environment.ExitCode = 0 Catch ex As Exception '終了コードを設定 Environment.ExitCode = 1 End Try End Sub End Class
VBScriptで終了コードを判定
ポイントは以下。
EXEファイルを起動し、「Status」プロパティが「0(ジョブ実行中)」から「1(ジョブ実行完了)」になるまでループ待機する。
終了コードの判定は、「ExitCode」プロパティで行う。
イベントログの出力は、シェルオブジェクトの「LogEvent」メソッドで行う。
イベントの種類は以下。
- 「0」…成功
- 「1」…エラー
- 「2」…警告
- 「4」…情報
- 「8」…成功の監査
- 「16」…失敗の監査
呼び出し元のVBScriptのソースコードはこちら。
Option Explicit '定数 Const EVENT_SUCCESS = 0 Const EVENT_ERROR = 1 Const EVENT_WARN = 2 Const EVENT_INFO = 4 '変数 Dim objShell Dim exec 'シェルオブジェクト作成 Set objShell = CreateObject("WScript.Shell") 'イベントログ出力 objShell.LogEvent EVENT_INFO, "開始しました。" 'プログラム実行 Set exec = objShell.Exec("C:\Projects\vb\Test\Test\bin\Release\Test.exe") 'プログラム実行完了までループ待機 Do While exec.Status = 0 WScript.Sleep 100 Loop If exec.ExitCode = 0 Then '終了コードが0(正常終了)の場合 'イベントログ出力 objShell.LogEvent EVENT_SUCCESS, "正常終了しました。" ElseIf exec.ExitCode = 1 Then '終了コードが1(エラー)の場合 'イベントログ出力 objShell.LogEvent EVENT_ERROR, "異常終了しました。" End If 'シェルオブジェクト破棄 Set objShell = Nothing
イベントログの確認
「スタート」⇒「コントロールパネル」⇒「コンピュータの管理」を開く。
左側の「システムツール」⇒「イベントビューアー」⇒「Windowsログ」⇒「アプリケーション」を選択すると表示される。
コメント