|
.NET TIPS Visual Basic 2005で多重起動禁止時に最初のインスタンスにパラメータを渡すには?[VS 2005のみ、VB]デジタルアドバンテージ 遠藤 孝信2007/10/25 |
![]() |
|
|
|
Visual Basic 2005でWindowsアプリケーションの多重起動を禁止するには?では、複数のWindowsアプリケーションの実行を制限する方法について解説しているが、単純に2つ目のインスタンスの起動を禁止するのではなく、すでに起動している最初のインスタンスで新たなコンテンツを開くようにしたい場合がある。
例えば、たいていの音楽再生アプリケーションでは、.MP3ファイルをエクスプローラでダブルクリックすることにより、現在の再生を中断して、いまダブルクリックされた.MP3ファイルを新たに再生するようになっている。
このようなアプリケーションを作成するには、2つ目のインスタンス起動時のコマンドライン引数を、最初のインスタンスで受け取ることができればよい*1。Visual Basic 2005のアプリケーション・フレームワーク*2を利用して多重起動を禁止する場合には、StartupNextInstanceイベント・ハンドラとなるメソッドのパラメータで、2つ目のインスタンスに指定されたコマンドライン引数を受け取ることができる。
| *1 特定の拡張子と関連付けられたアプリケーションは、その拡張子のファイルをエクスプローラでダブルクリックすることにより、そのファイルがコマンドライン引数で指定された状態で実行される。また、エクスプローラでアプリケーションにファイルをドラッグ&ドロップしても、そのファイルがコマンドライン引数で指定された状態でアプリケーションが実行される。 *2 VB 2005のアプリケーション・フレームワークについては「TIPS:Visual Basic 2005のアプリケーション・フレームワークとは?」を参照。 |
以下では記述例として、コマンドライン引数で指定されたテキスト・ファイルを、常に1つのインスタンスで開くサンプル・アプリケーションを作成する。
単一インスタンスでテキスト・ファイルを開くサンプル・アプリケーション
まず、コマンドライン引数で指定されたファイルを開き、その内容をテキストボックスで表示する処理をLoadイベント・ハンドラで記述する。ここではフォーム(Form1)上にテキストボックス(TextBox1)が配置されているものとする。また、そのテキストボックスではMultilineプロパティをTrueに設定し、複数行表示できるようにしておく。
| |
| リスト1 指定されたファイルをテキストボックスで表示するLoadイベント・ハンドラ |
コマンドライン引数の取得に関しては「TIPS:コマンドライン引数を取得するには?」を、ReadAllTextメソッドによるファイルの読み込みに関しては「TIPS:テキスト・ファイルの内容を簡単に読み込むには?」を参照していただきたい。
次に、StartupNextInstanceイベント・ハンドラを以下のように記述する。StartupNextInstanceイベント・ハンドラの追加に関しては、「TIPS:Visual Basic 2005で多重起動禁止時にメッセージを出すには?」で解説している。
| |
| リスト2 StartupNextInstanceイベント・ハンドラ | |
| 実際に記述するのは白字部分のみ。グレーの部分は自動作成される。 |
StartupNextInstanceイベント・ハンドラでは、第2パラメータであるStartupNextInstanceEventArgsオブジェクト(Microsoft.VisualBasic.ApplicationService名前空間)のCommandLineプロパティから、2つ目のインスタンスに指定されたコマンドライン引数を取得できる。CommandLineプロパティの値は、ReadOnlyCollectionクラス(System.Collections.ObjectModel名前空間)のオブジェクトである。
なお、リスト1のEnvironment.GetCommandLineArgsメソッドが返す文字列配列では、2番目の要素がコマンドラインの第1引数となるのに対して(1番目の要素はアプリケーション自体のフル・パス名)、リスト2のCommandLineプロパティでは先頭の要素がコマンドラインの第1引数となる点に少し注意が必要だ。![]()
| 利用可能バージョン:.NET Framework 2.0のみ カテゴリ:Visual Studio 2005 処理対象:プロジェクト カテゴリ:Visual Basic 2005 処理対象:アプリケーション・フレームワーク 使用ライブラリ:StartupNextInstanceEventArgsクラス(Microsoft.VisualBasic.ApplicationService名前空間) 使用ライブラリ:ReadOnlyCollectionクラス(System.Collections.ObjectModel名前空間) 関連TIPS:Visual Basic 2005でWindowsアプリケーションの多重起動を禁止するには? 関連TIPS:Visual Basic 2005のアプリケーション・フレームワークとは? 関連TIPS:コマンドライン引数を取得するには? 関連TIPS:テキスト・ファイルの内容を簡単に読み込むには? 関連TIPS:Visual Basic 2005で多重起動禁止時にメッセージを出すには? |
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


