.NET TIPS

Visual Basic 2005で多重起動禁止時にメッセージを出すには?[VS 2005のみ、VB]

デジタルアドバンテージ 遠藤 孝信
2007/08/23

 「TIPS:Visual Basic 2005でWindowsアプリケーションの多重起動を禁止するには?」では、Visual Basic 2005(Visual Basic 2005 Express EditionあるいはVisual Studio 2005のVisual Basic。以下、VB 2005)でアプリケーションを1つのインスタンスしか実行できないようにする方法について解説している。

 そのようにした場合には、2つ目のインスタンスを起動しようとすると1つ目のインスタンスのウィンドウがアクティブになるのだが、これだけでは利用者によっては何が起こったか理解しづらいこともあるだろう。本稿では、多重起動禁止時に2つ目のインスタンスを実行しようとしたとき、その旨を伝えるメッセージを表示する方法について解説する。

StartupNextInstanceイベント

 多重起動禁止時*1には、2つ目以降のインスタンスが起動されようとすると、そのインスタンスでMyApplicationクラスのStartupNextInstanceイベントが発生するという仕組みがVB 2005のWindowsアプリケーション・フレームワーク*2に実装されている。

*1 プロジェクトのプロパティの[アプリケーション]タブで[単一インスタンスのアプリケーションを作成する]チェックボックスをオンにしたとき。

*2 VB 2005のアプリケーション・フレームワークやMyApplicationクラスについては「TIPS:Visual Basic 2005のアプリケーション・フレームワークとは?」を参照。

 よって、StartupNextInstanceイベントのイベント・ハンドラで「このアプリケーションは複数起動できません」といったメッセージを出すようにすればよい。

 MyApplicationクラスにStartupNextInstanceイベント・ハンドラを追加するには、まずプロジェクトのプロパティで[アプリケーション イベントの表示]ボタンをクリックしてプロジェクトに「ApplicationEvents.vb」を追加する。次にこのファイルをエディタで開き、エディタ画面の左上のドロップダウンリストから「(MyApplicationイベント)」を、その右のドロップダウンリストから「StartupNextInstance」を選択する。

 これにより、次の画面のようにStartupNextInstanceイベント・ハンドラとなるMyApplication_StartupNextInstanceメソッドが自動作成される。


StartupNextInstanceイベント・ハンドラの追加
VB 2005ではイベント・ハンドラを自動作成することができる。
  「(MyApplicationイベント)」を選択する。
  「StartupNextInstance」を選択する。

 そしてイベント・ハンドラに以下のようなコードを記述する。

Private Sub MyApplication_StartupNextInstance(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs) Handles Me.StartupNextInstance
  Me.MainForm.Activate()
  MessageBox.Show("このアプリケーションは複数起動できません")
End Sub
StartupNextInstanceイベント・ハンドラに追加するコード
グレーの部分はVB 2005により自動的に記述されるコード。

 ここではActivateメソッドによりメイン・フォームをアクティブにしてからメッセージを表示している。これにより、メッセージボックスがほかのウィンドウより前面に表示されるようになる。

 ちなみに、MyApplicationクラスのイベントの1つに、アプリケーション起動時に発生するStartupイベントがあるが、多重起動を禁止している場合には、このイベントは1つ目のインスタンスでのみ発生するようになる。2つ目以降のインスタンスでは、Startupイベントの代わりにStartupNextInstanceイベントが発生するというわけだ。End of Article

利用可能バージョン:.NET Framework 2.0のみ
カテゴリ:Visual Studio 2005 処理対象:プロジェクト
カテゴリ:Visual Basic 2005 処理対象:アプリケーション・フレームワーク
関連TIPS:Visual Basic 2005でWindowsアプリケーションの多重起動を禁止するには?
関連TIPS:Visual Basic 2005のアプリケーション・フレームワークとは?

この記事と関連性の高い別の.NET TIPS
Visual Basic 2005でWindowsアプリケーションの多重起動を禁止するには?
Visual Basic 2005で多重起動禁止時に最初のインスタンスにパラメータを渡すには?
Visual Basic 2005のアプリケーション・フレームワークとは?
Visual Basic 2005でスプラッシュ・スクリーンの表示時間を変更するには?
Windowsフォームの表示直後に初期化処理を行うには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間