すべての Visual Basic アプリケーションには、 Main
という名前のプロシージャが含まれている必要があります。 この手順は、アプリケーションの開始点と全体的な制御として機能します。 .NET Framework は、アプリケーションを読み込み、制御を渡す準備ができたら、 Main
プロシージャを呼び出します。 Windows フォーム アプリケーションを作成する場合を除き、独自に実行するアプリケーションの Main
プロシージャを記述する必要があります。
Main
には、最初に実行されるコードが含まれています。
Main
では、プログラムの起動時に最初に読み込むフォームを決定したり、アプリケーションのコピーがシステムで既に実行されているかどうかを確認したり、アプリケーションの変数のセットを確立したり、アプリケーションに必要なデータベースを開いたりすることができます。
メイン プロシージャの要件
単独で実行するファイル (通常は拡張子が .exe) には、 Main
プロシージャが含まれている必要があります。 ライブラリ (拡張 .dllなど) は単独で実行されず、 Main
プロシージャは必要ありません。 作成できるさまざまな種類のプロジェクトの要件は次のとおりです。
コンソール アプリケーションは単独で実行され、少なくとも 1 つの
Main
プロシージャを指定する必要があります。Windows フォーム アプリケーションは、独自に実行されます。 ただし、Visual Basic コンパイラは、このようなアプリケーションで
Main
プロシージャを自動的に生成するため、プロシージャを記述する必要はありません。クラス ライブラリには、
Main
プロシージャは必要ありません。 これには、Windows コントロール ライブラリと Web コントロール ライブラリが含まれます。 Web アプリケーションはクラス ライブラリとしてデプロイされます。
主要手続きの宣言
Main
プロシージャを宣言するには、4 つの方法があります。 引数を受け取るかどうかにかかわらず、値を返すことができます。
注
クラスで Main
を宣言する場合は、 Shared
キーワードを使用する必要があります。 モジュールでは、 Main
を Shared
する必要はありません。
最も簡単な方法は、引数を受け取ったり値を返したりしない
Sub
プロシージャを宣言することです。Module mainModule Sub Main() MsgBox("The Main procedure is starting the application.") ' Insert call to appropriate starting place in your code. MsgBox("The application is terminating.") End Sub End Module
Main
は、オペレーティング システムがプログラムの終了コードとして使用するInteger
値を返すこともできます。 他のプログラムでは、Windows ERRORLEVEL 値を調べることで、このコードをテストできます。 終了コードを返すには、Main
プロシージャではなく、Function
プロシージャとしてSub
を宣言する必要があります。Module mainModule Function Main() As Integer MsgBox("The Main procedure is starting the application.") Dim returnValue As Integer = 0 ' Insert call to appropriate starting place in your code. ' On return, assign appropriate value to returnValue. ' 0 usually means successful completion. MsgBox("The application is terminating with error level " & CStr(returnValue) & ".") Return returnValue End Function End Module
Main
では、String
配列を引数として受け取ることもできます。 配列内の各文字列には、プログラムの呼び出しに使用されるコマンド ライン引数のいずれかが含まれています。 値に応じて異なるアクションを実行できます。Module mainModule Function Main(ByVal cmdArgs() As String) As Integer MsgBox("The Main procedure is starting the application.") Dim returnValue As Integer = 0 ' See if there are any arguments. If cmdArgs.Length > 0 Then For argNum As Integer = 0 To UBound(cmdArgs, 1) ' Insert code to examine cmdArgs(argNum) and take ' appropriate action based on its value. Next End If ' Insert call to appropriate starting place in your code. ' On return, assign appropriate value to returnValue. ' 0 usually means successful completion. MsgBox("The application is terminating with error level " & CStr(returnValue) & ".") Return returnValue End Function End Module
次のように、
Main
を宣言してコマンドライン引数を調べることができますが、終了コードは返しません。Module mainModule Sub Main(ByVal cmdArgs() As String) MsgBox("The Main procedure is starting the application.") Dim returnValue As Integer = 0 ' See if there are any arguments. If cmdArgs.Length > 0 Then For argNum As Integer = 0 To UBound(cmdArgs, 1) ' Insert code to examine cmdArgs(argNum) and take ' appropriate action based on its value. Next End If ' Insert call to appropriate starting place in your code. MsgBox("The application is terminating.") End Sub End Module
こちらも参照ください
.NET