2009年4月17日金曜日

.NET Exeの戻り値を設定するには?

EXE側のプログラムです。
Mainメソッド内では通常のメソッドと同じようにReturn値で返します。
その他のメソッドではSystem.Environment.Exitで戻り値を返します。

Imports System.Threading
Imports System.Windows.Forms

Public Class Main
Public Const c_Error As Integer = 0
Public Const c_Success As Integer = 1


''' 
''' アプリケーション スレッドに関するコンテキスト情報です。
''' 
Private Shared _MainApplicationContext As New ApplicationContext

''' 
''' アプリケーションエントリーポイントです。
''' 
Public Shared Function Main() As Integer

'捕捉できない例外をキャッチします。
AddHandler Application.ThreadException, AddressOf Application_ThreadException

'フォーム1を表示します。
Dim frm As New Form1
_MainApplicationContext.MainForm = frm

'アプリケーションを実行します。
Application.Run(_MainApplicationContext)

   '正常終了を戻します。
Return c_Success
End Function

''' 
''' 捕捉しなかった例外が出力された際のイベントです。
''' 
''' 
''' 
''' 
Public Shared Sub Application_ThreadException(ByVal sender As Object, ByVal e As ThreadExceptionEventArgs)
Dim ex As Exception = e.Exception
MessageBox.Show(ex.Message)

   '異常終了を返します。
System.Environment.Exit(c_Error)

End Sub
End Class


exeを呼び出す側のコードです。
Using process As Process = process.Start("XXX.exe")
process.WaitForExit()
Console.WriteLine(process.ExitCode.ToString)
End Using

0 件のコメント: