|  
 .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ではイベント・ハンドラを自動作成することができる。
  | 
そしてイベント・ハンドラに以下のようなコードを記述する。
  | |
| StartupNextInstanceイベント・ハンドラに追加するコード | |
| グレーの部分はVB 2005により自動的に記述されるコード。 | 
ここではActivateメソッドによりメイン・フォームをアクティブにしてからメッセージを表示している。これにより、メッセージボックスがほかのウィンドウより前面に表示されるようになる。
 ちなみに、MyApplicationクラスのイベントの1つに、アプリケーション起動時に発生するStartupイベントがあるが、多重起動を禁止している場合には、このイベントは1つ目のインスタンスでのみ発生するようになる。2つ目以降のインスタンスでは、Startupイベントの代わりにStartupNextInstanceイベントが発生するというわけだ。![]()
| 利用可能バージョン:.NET Framework 2.0のみ カテゴリ:Visual Studio 2005 処理対象:プロジェクト カテゴリ:Visual Basic 2005 処理対象:アプリケーション・フレームワーク 関連TIPS:Visual Basic 2005でWindowsアプリケーションの多重起動を禁止するには? 関連TIPS:Visual Basic 2005のアプリケーション・フレームワークとは?  | 
| 「.NET TIPS」 | 
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える 
 
  | 
 |






