次の方法で共有


Visual Basic のメイン プロシージャ

すべての 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 キーワードを使用する必要があります。 モジュールでは、 MainSharedする必要はありません。

  • 最も簡単な方法は、引数を受け取ったり値を返したりしない 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
    

こちらも参照ください