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ログ」⇒「アプリケーション」を選択すると表示される。



コメント