My.Application.StartupNextInstance イベント
更新 : 2007 年 11 月
単一インスタンス アプリケーションを起動しようとしたときに、既にそのアプリケーションがアクティブである場合に発生します。
' Usage
Public Sub Me_StartupNextInstance( _
ByVal sender As Object, _
ByVal e As StartupNextInstanceEventArgs _
) Handles Me.StartupNextInstance
End Sub
' Declaration
Public Event StartupNextInstance( _
ByVal sender As Object, _
ByVal e As StartupNextInstanceEventArgs _
)
パラメータ
sender
イベントの発生元の Object。e
アプリケーションのコマンド ライン引数を含んでいる StartupEventArgs オブジェクト。
解説
単一インスタンス アプリケーションは、そのアプリケーションが既にアクティブであるときに再起動しようとすると、StartupNextInstance イベントを発生させます。単一インスタンス アプリケーションを最初に起動したときには、Startup イベントが発生します。詳細については、「My.Application.Startup イベント」および「方法 : アプリケーションのインスタンス化の動作を指定する (Visual Basic)」を参照してください。
このイベントは、Visual Basic アプリケーション モデルの一部です。詳細については、「Visual Basic アプリケーション モデルの概要」を参照してください。
このイベントは、他のユーザー インターフェイス イベントと一緒にアプリケーションのメイン スレッド上で発生します。そのため、イベント ハンドラはアプリケーションのユーザー インターフェイスに直接アクセスできます。ただし、アプリケーションが他のユーザー インターフェイス イベントを処理している最中にこのイベントが発生した場合は、他のイベント ハンドラが完了するまで、または My.Application.DoEvents メソッドが呼び出されるまでは、このイベントは処理されません。
メモ : |
---|
StartupNextInstance イベントは単一インスタンス アプリケーションでのみ発生します。アプリケーションで単一インスタンスの動作を有効にするには、プロジェクト デザイナの [単一インスタンスのアプリケーションを作成する] チェック ボックスをオンにします。詳細については、「方法 : アプリケーションのインスタンス化の動作を指定する (Visual Basic)」を参照してください。 |
これ以降、単一インスタンス アプリケーションの起動時の引数にアクセスするには、e パラメータの CommandLine プロパティを使用する必要があります。My.Application.CommandLineArgs プロパティを使用すると、単一インスタンス アプリケーションの最初のインスタンスを起動するときに使用する引数にアクセスできます。
StartupNextInstance イベント ハンドラのコードは ApplicationEvents.vb ファイルに格納されます。このファイルは既定では非表示です。
アプリケーション イベントのコード エディタ ウィンドウを表示するには、次の操作を行います。
ソリューション エクスプローラでプロジェクトを選択した状態で、[プロジェクト] メニューの [プロパティ] をクリックします。
[アプリケーション] タブをクリックします。
[アプリケーション イベントの表示] をクリックしてコード エディタを開きます。
詳細については、「方法 : アプリケーション イベントを処理する (Visual Basic)」を参照してください。
処理手順
My.Application.StartupNextInstance イベントに関連するタスクの例を次の表に示します。
目的 |
参照項目 |
---|---|
Visual Basic アプリケーション モデルに用意されているイベントを使用してコードを実行する |
|
最初のアプリケーション インスタンスのコマンド ライン引数を調べる |
使用例
この例では、StartupNextInstance イベント ハンドラの e パラメータを使用して、アプリケーションのコマンド ライン引数を調べます。/input= で始まる引数が見つかった場合は、その引数の残りの部分を表示します。
Private Sub MyApplication_StartupNextInstance( _
ByVal sender As Object, _
ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs _
) Handles Me.StartupNextInstance
Dim inputArgument As String = "/input="
Dim inputName As String = ""
For Each s As String In e.CommandLine
If s.ToLower.StartsWith(inputArgument) Then
inputName = s.Remove(0, inputArgument.Length)
End If
Next
If inputName = "" Then
MsgBox("No input name")
Else
MsgBox("Input name: " & inputName)
End If
End Sub
このコードはアプリケーション イベントのコード エディタ ウィンドウ内に入力する必要があります。このウィンドウにアクセスするには、「解説」で説明した手順に従ってください。詳細については、「方法 : アプリケーション イベントを処理する (Visual Basic)」を参照してください。
必要条件
名前空間 : Microsoft.VisualBasic.ApplicationServices
クラス : WindowsFormsApplicationBase
**アセンブリ :**Visual Basic ランタイム ライブラリ (Microsoft.VisualBasic.dll)
使用可能なプロジェクトの種類
プロジェクトの種類 |
使用可能 |
---|---|
Windows アプリケーション |
○ |
クラス ライブラリ |
X |
コンソール アプリケーション |
X |
Windows コントロール ライブラリ |
X |
Web コントロール ライブラリ |
X |
Windows サービス |
X |
Web サイト |
X |
アクセス許可
アクセス許可は不要です。
参照
処理手順
方法 : アプリケーション イベントを処理する (Visual Basic)
方法 : アプリケーションのインスタンス化の動作を指定する (Visual Basic)
方法 : アプリケーションのインスタンス化の動作を指定する (Visual Basic)