次の方法で共有


Visual Basic の Main プロシージャ

更新 : 2007 年 11 月

すべての Visual Basic アプリケーションには、Main という名前のプロシージャが含まれている必要があります。このプロシージャは、アプリケーションの開始点となり、アプリケーションの総合的な制御を行います。.NET Framework は、アプリケーションをロードして、アプリケーションに制御を渡せる状態になると、Main プロシージャを呼び出します。Windows フォーム アプリケーションを作成する場合以外は、アプリケーションのエントリ ポイントとなる Main プロシージャを作成する必要があります。

Main には、最初に実行するコードを記述します。Main では、プログラムの起動時に最初に読み込まれるフォームを決定したり、同一アプリケーションが既にシステム上で稼動しているかどうかを調べたり、アプリケーションで使用する一連の変数を作成したり、アプリケーションで必要なデータベースを開いたりできます。

Main プロシージャの要件

単独で実行されるファイル (通常は拡張子 .exe を持つ) には、Main プロシージャを含める必要があります。ライブラリ (拡張子 .dll を持つものなど) は単独では実行されないので、Main プロシージャは必要ありません。各種のプロジェクトについての要件を次に示します。

  • コンソール アプリケーションは単独で実行されるので、少なくとも 1 つの Main プロシージャを記述する必要があります。.

  • Windows フォーム アプリケーションは単独で実行されます。しかし、このようなアプリケーションでは Visual Basic コンパイラが自動的に Main プロシージャを生成するので、独自に記述する必要はありません。

  • クラス ライブラリには Main プロシージャは必要ありません。これには Windows コントロール ライブラリと Web コントロール ライブラリが含まれます。Web アプリケーションはクラス ライブラリとして配置されます。

Main プロシージャの宣言

Main プロシージャを宣言するには 4 種類の方法があります。引数を受け取るものと受け取らないもの、値を返すものと返さないものです。

ms235406.alert_note(ja-jp,VS.90).gifメモ :

クラス内で 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 を Sub プロシージャではなく Function プロシージャとして宣言する必要があります。

    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 配列を受け取ることができます。配列内の各文字列には、プログラムの実行に使用するコマンド ライン引数の 1 つが含まれます。これらの値に応じて、異なる動作を実行できます。

    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 argNum
            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 argNum
            End If
            ' Insert call to appropriate starting place in your code.
            MsgBox("The application is terminating."
        End Sub
    End Module
    

参照

概念

Visual Basic バージョンの Hello World!

参照

Visual Basic プログラムの構造

/main

Shared (Visual Basic)

MsgBox 関数 (Visual Basic)

Sub ステートメント (Visual Basic)

Function ステートメント (Visual Basic)

整数型 (Integer) (Visual Basic)

文字列型 (String) (Visual Basic)

Length

UBound 関数 (Visual Basic)