.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でスプラッシュ・スクリーンの表示時間を変更するには?
Visual Basic 2005でスプラッシュ・スクリーンにメッセージを表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH