更新 : 2007 年 11 月
このサンプルでは、スタンドアロン アプリケーションに単一インスタンス検出を実装する方法を示します。
このサンプルでは、Windows Presentation Foundation の特定の機能を示します。そのため、アプリケーション開発のベスト プラクティスに従っていません。Windows Presentation Foundation (WPF) と Microsoft .NET Framework のアプリケーション開発ベスト プラクティスの包括的な説明については、適宜、次のトピックを参照してください。
ユーザー補助 - 「ユーザー補助のベスト プラクティス」
ローカリゼーション - 「WPF のグローバリゼーションおよびローカリゼーションの概要」
パフォーマンス - 「WPF アプリケーションのパフォーマンスの最適化」
セキュリティ - 「Windows Presentation Foundation のセキュリティ」
サンプルのビルド
Windows ソフトウェア開発キット (SDK) をインストールして、そのビルド環境のコマンド ウィンドウを開きます。[スタート] メニューの [すべてのプログラム]、[Microsoft Windows SDK] の順にポイントし、[CMD シェル] をクリックします。
サンプルをハード ディスク ドライブにダウンロードします。通常は、ソフトウェア開発キット (SDK) のドキュメントからダウンロードします。
ビルド環境のコマンド ウィンドウからサンプルをビルドするには、サンプルのソース ディレクトリに移動します。コマンド プロンプトで「MSBUILD」と入力します。
Microsoft Visual Studio でサンプルをビルドするには、サンプル ソリューションかプロジェクト ファイルを読み込んで、Ctrl キーと Shift キーを押しながら B キーを押します。
サンプルの実行
コンパイルしたサンプルをビルド環境のコマンド ウィンドウから実行するには、サンプルのソース コード フォルダの下にある Bin\Debug または Bin\Release フォルダで .exe ファイルを実行します。
コンパイルしたサンプルを Visual Studio でデバッグしながら実行するには、F5 キーを押します。
解説
単一インスタンスの検出を開発する最も一般的で信頼できる手法は、Microsoft .NET Framework リモート処理インフラストラクチャ (System.Remoting) を使用することです。Microsoft .NET Framework (バージョン 2.0) には、必要なリモート処理機能をカプセル化する WindowsFormsApplicationBase 型が含まれています。この型を WPF アプリケーションに組み込むには、この型の派生型を作成し、アプリケーションの静的エントリ ポイント メソッド Main と WPF アプリケーションの Application 型の間のシムとして使用する必要があります。シムは、アプリケーションが最初に起動されたとき、および 2 回目以降の起動が試行されたときにそれを検出し、WPF Application を制御して起動の処理方法を決定します。
![]() |
---|
WindowsFormsApplicationBase は独自のメッセージ処理を開始できますが、このサンプルで示されている手法では開始されません。代わりに、通常どおりに WPF メッセージ ポンプで処理されます。 |