Windowsアプリで多重起動を禁止する(GUID編)(#2)

2018 年 2 月 19 日 by Dr.K

前回の記事ではVB.NETのWindowsアプリケーションで、簡単な設定のみで多重起動を禁止する方法をご紹介しました。

ただしその設定だけだと、メッセージも何も表示されないまま終了してしまうため、今回は「多重起動された」場合の処理を追加してみたいと思います。

前回と同様、まずはプロジェクトのプロパティを開き、「アプリケーション」タブから「アプリケーション イベントの表示」ボタンをクリックしてみてください。アプリケーションイベントの表示

するとソースエディタでApplicationEvents.vbというファイルが表示されると思います。

ApplicationEvents.vb

詳しい説明は長くなってしまうため割愛させていただきますが、Windowsアプリを起動した場合、このApplicationEventsの処理がまず起動され、その後フォームが立ち上がる仕組みとなっています。

ファイル中にコメントされていますが、いくつかのイベントが用意されており、今回はその中から「StartupNextInstans」イベントを利用して、多重起動時の処理を実装します。

このイベントの説明は以下のように記載されています。

単一インスタンス アプリケーションが起動され、それが既にアクティブであるときに発生します。

若干日本語が理解しづらいのですが、多重起動が禁止されているアプリケーションが、既に起動されているにもかかわらず、もう一つ起動された場合に発生するイベントです。

というわけで、今回のプログラミングは以下のようにメッセージを表示する、だけでよいことになります。

''' <summary>
''' 単一インスタンス アプリケーションが起動され、
''' それが既にアクティブであるときに発生します。 
''' </summary>
Private Sub MyApplication_StartupNextInstance(sender As Object, e As StartupNextInstanceEventArgs) Handles Me.StartupNextInstance
    MessageBox.Show("このプログラムは同時に複数起動することはできません。")
End Sub

このプログラムを複数立ち上げると以下のようにメッセージが表示されます。
複数起動時

今回はWindowsアプリ(VB.NET)で多重起動された場合の処理について紹介しました。
ApplicationEventsには今回利用したイベント「StartupNextInstance」以外にもいくつかイベントが用意されています。
今度機会があれば、こちらの内容についても紹介できればと思います。

タグ:

TrackBack