ブラウザでホストされているかどうかの検出のサンプル
更新 : 2007 年 11 月
このサンプルでは、コードが XAML ブラウザ アプリケーション (XBAP) とスタンドアロン アプリケーションのどちらから実行されているかを検出する方法を示します。
このサンプルでは、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 キーを押します。
解説
このサンプルは、XAML ブラウザ アプリケーション (XBAP) アプリケーション (XBAPClient) とスタンドアロンの Windows アプリケーション (WinAppClient) が共有するライブラリ (SharedLibary) で構成されています。SharedLibrary は、両方のクライアント アプリケーションに共通するタスクを実行するための機能をカプセル化します。この機能の一部は、機能をホストしているクライアントの種類 (ブラウザによってホストされる場合は Page、またはスタンドアロン アプリケーションでホストされる場合は Window など) に対応する、ユーザー インターフェイス (UI) を示します。
この共有ライブラリは、IsBrowserHosted を使用して、コードがブラウザでホストされているアプリケーションとスタンドアロン アプリケーションのどちらで実行されているかを検出します。
メモ : |
---|
IsBrowserHosted を検査するコードと同じメンバ内では、Window をインスタンス化するコードは使用できません。これは、継承に関して、インスタンス化される Window を含むメンバは UIPermission を持っていなければならないという条件があるためです。この問題を解決するには、このサンプルに示すように、IsBrowserHosted を検査するときのメンバとは別のメソッドに Window のインスタンス化コードを移動し、呼び出すように、コードをリファクタリングします。 |