エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

ファイルに応じて既定のアプリを起動する方法 (XAML)

ファイルに応じて既定のアプリを起動する方法について説明します。多くのアプリでは、アプリ自体で処理できないファイルを操作する必要が生じる場合があります。たとえば、さまざまな種類のファイルを受け取るメール アプリは、これらのファイルを既定のハンドラーで起動する手段を備えている必要があります。 以下の手順では、Windows.System.Launcher API を使って、アプリがそれ自体で処理できないファイルの既定のハンドラーを起動する方法を示します。

手順

ステップ 1: ファイルを取得する

最初にファイルの Windows.Storage.StorageFile オブジェクトを取得します。

ファイルがアプリのパッケージに含まれている場合は、Package.InstalledLocation プロパティで Windows.Storage.StorageFolder オブジェクトを取得し、Windows.Storage.StorageFolder.GetFileAsync メソッドで StorageFile オブジェクトを取得します。

ファイルが既知のフォルダー内にある場合には、Windows.Storage.KnownFolders クラスのプロパティで StorageFolder を取得し、GetFileAsync メソッドで StorageFile オブジェクトを取得します。

ステップ 2: ファイルを起動する

Windows には、ファイルの既定のハンドラーを起動するためのいくつかの異なるオプションが用意されています。これらのオプションについて、次の表とセクションで説明します。

オプションメソッド説明
既定の起動 LaunchFileAsync(IStorageFile) 指定されたファイルを既定のハンドラーで起動します。
[プログラムから開く] を使った起動 LaunchFileAsync(IStorageFile, LauncherOptions) 指定されたファイルを [プログラムから開く] ダイアログでユーザーによって選択されたハンドラーを使って起動します。
推奨されるアプリ フォールバックを使った起動 LaunchFileAsync(IStorageFile, LauncherOptions) 指定されたファイルを既定のハンドラーで起動します。ハンドラーがシステムにインストールされていない場合は、ストアにあるアプリをユーザーに勧めます。
画面上に留まった適切なビューを使った起動 LaunchFileAsync(IStorageFile, LauncherOptions)(Windows のみ)指定されたファイルを既定のハンドラーで起動します。起動後も画面上に留まるように指定し、特定のウィンドウ サイズを要求します。

Windows 8.1:  [LauncherOptions.DesiredRemainingView] は Windows 8.1 と Windows Server 2012 R2 までサポートされません。

Windows Phone:  [LauncherOptions.DesiredRemainingView] は、Windows Phone ではサポートされていません。

 

Default launch

既定のアプリを起動するには、Windows.System.Launcher.LaunchFileAsync(IStorageFile) メソッドを呼び出します。この例では Windows.Storage.StorageFolder.GetFileAsync メソッドを使って、このアプリ パッケージに含まれる画像ファイル test.png を起動します。


async void DefaultLaunch()
{
   // Path to the file in the app package to launch
   string imageFile = @"images\test.png";

   var file = wait Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(imageFile);

   if (file != null)
   {
      // Launch the retrieved file
      var success = await Windows.System.Launcher.LaunchFileAsync(file);

      if (success)
      {
         // File launched
      }
      else
      {
         // File launch failed
      }
   }
   else
   {
      // Could not find file
   }
}

Open with launch

LauncherOptions.DisplayApplicationPickertrue に設定して Windows.System.Launcher.LaunchFileAsync(IStorageFile, LauncherOptions) メソッドを呼び出して、ユーザーが [プログラムから開く] ダイアログ ボックスで選んだアプリを起動します。

ユーザーが特定のファイルに既定以外のアプリを選ぶ場合は、[プログラムから開く] ダイアログ ボックスを使うことをお勧めします。 たとえば、アプリで画像ファイルを起動できる場合、既定のハンドラーは多くの場合ビューアー アプリです。 場合によっては、ユーザーが画像の表示ではなく編集を行うこともあります。[プログラムから開く] オプションを AppBar またはコンテキスト メニューで代替コマンドと共に使って、ユーザーが [プログラムから開く] ダイアログを開き、このようなシナリオでエディター アプリを選択できるようにします。

.png ファイルに対する [プログラムから開く] ダイアログが起動されます。このダイアログには、ユーザーによって選択されたアプリをすべての .png ファイルに使用するかまたはこの 1 つの .png ファイルのみに使用するかを指定するチェック ボックスがあります。また、このダイアログには、ファイルの起動に関する 4 つのアプリ オプションと、[その他のオプション] リンクがあります。

async void DefaultLaunch()
{
   // Path to the file in the app package to launch
   string imageFile = @"images\test.png";

   var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(imageFile);

   if (file != null)
   {
      // Set the option to show the picker
      var options = new Windows.System.LauncherOptions();
      options.DisplayApplicationPicker = true;

      // Launch the retrieved file
      bool success = await Windows.System.Launcher.LaunchFileAsync(file, options);
      if (success)
      {
         // File launched
      }
      else
      {
         // File launch failed
      }
   }
   else
   {
      // Could not find file
   }
}

Launch with a recommended app fallback

場合によっては、起動中のファイルを処理するためのアプリがインストールされていないこともあります。既定では、Windows はストア上の適切なアプリを検索するリンクを表示して、これらのケースに対処します。このシナリオで入手するアプリに関する特定の推奨事項を示す場合は、起動中のファイルと共に推奨事項を渡すことができます。そのためには、LauncherOptions.PreferredApplicationPackageFamilyName を推奨するストア内のアプリのパッケージのファミリ名に設定して、Windows.System.Launcher.launchFileAsync(IStorageFile, LauncherOptions) メソッドを呼び出します。 その後、LauncherOptions.PreferredApplicationDisplayName をそのアプリの名前に設定します。Windows ではこの情報を使って、ストア内のアプリを検索する一般的なオプションを、ストアから推奨アプリを入手する固有のオプションに置き換えます。

  アプリを推奨するには、これらの両方のオプションを設定する必要があります。どちらか一方のみを設定した場合は、エラーになります。
.contoso ファイルの起動のための [プログラムから開く] ダイアログ。コンピューターには .contoso に対応するハンドラーがインストールされていないため、このダイアログには、ストア アイコンとストア上の適切なハンドラーをユーザーに通知するテキストを含むオプションが表示されます。このダイアログには、[その他のオプション] リンクもあります。

async void DefaultLaunch()
{
   // Path to the file in the app package to launch
   string imageFile = @"images\test.contoso";

   // Get the image file from the package's image directory
   var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(imageFile);

   if (file != null)
   {
      // Set the recommended app
      var options = new Windows.System.LauncherOptions();
      options.PreferredApplicationPackageFamilyName = “Contoso.FileApp_8wknc82po1e”;
      options.PreferredApplicationDisplayName = “Contoso File App”;


      // Launch the retrieved file pass in the recommended app 
      // in case the user has no apps installed to handle the file
      bool success = await Windows.System.Launcher.LaunchFileAsync(file, options);
      if (success)
      {
         // File launched
      }
      else
      {
         // File launch failed
      }
   }
   else
   {
      // Could not find file
   }
}


画面上に留まった適切なビューを使った起動 (Windows のみ)

LaunchFileAsync を呼び出すソース アプリは、ファイルの起動後も画面上に留まることを要求できます。既定では、利用可能なスペース全体がソース アプリとファイルを処理するターゲット アプリとで均等に共有されます。ソース アプリでは、DesiredRemainingView プロパティを使って、利用可能なスペースをソース アプリのウィンドウがどの程度占めるかをオペレーティング システムに指示できます。この DesiredRemainingView では、ファイルの起動後にソース アプリが画面上に留まる必要がなく、ターゲット アプリに完全に置き換わっても良いことも示せます。このプロパティは呼び出し元アプリの優先ウィンドウのサイズだけを指定します。画面に同時に表示されている可能性のある他のアプリの動作は指定しません。

  ソース アプリの最終的なウィンドウ サイズは、複数の異なる要素が考慮されて決定されます。たとえば、ソース アプリの設定、画面上のアプリの数、画面の向きなどです。DesiredRemainingView を設定しても、ソース アプリの特定のウィンドウ動作が保証されるわけではありません。

Windows 8.1:  LauncherOptions.DesiredRemainingView は Windows 8.1 と Windows Server 2012 R2 までサポートされません。

Windows Phone:  LauncherOptions.DesiredRemainingView は、Windows Phone ではサポートされていません。


async void DefaultLaunch()
{
   // Path to the file in the app package to launch
   string imageFile = @"images\test.png";

   var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(imageFile);

   if (file != null)
   {
      // Set the desired remaining view
      var options = new Windows.System.LauncherOptions();
      options.DesiredRemainingView = Windows.UI.ViewManagement.ViewSizePreference.UseLess;

      // Launch the retrieved file
      bool success = await Windows.System.Launcher.LaunchFileAsync(file, options);
      if (success)
      {
         // File launched
      }
      else
      {
         // File launch failed
      }
   }
   else
   {
      // Could not find file
   }
}


注釈

起動するアプリをアプリが選ぶことはできません。どのアプリを起動するかはユーザーが決めます。ユーザーは、Windows ランタイム アプリまたはデスクトップ アプリを選ぶことができます。

ファイルの起動時、アプリはユーザーに表示されるフォアグラウンド アプリである必要があります。この要件は、ユーザーが制御を維持するのに役立ちます。この要件を満たすために、すべてのファイル起動がアプリの UI に直接結び付けられていることを確認します。 ほとんどの場合、ファイル起動を開始するには、常にユーザーがなんらかの操作を行う必要があります。

.exe、.msi、.js ファイルなど、オペレーティング システムによって自動的に実行されるコードまたはスクリプトを含むファイルの種類を起動することはできません。この制約により、オペレーティング システムを変更する可能性のある、悪意のあるファイルからユーザーを保護できます。この方法では、.docx ファイルなど、スクリプトを分離するアプリによって実行されるスクリプトを含むファイルの種類を起動できます。Microsoft Word などのアプリは、.docx ファイルのスクリプトがオペレーティング システムを変更しないようにします。

制限されている種類のファイルを起動しようとすると、起動は失敗し、エラー コールバックが呼び出されます。アプリがさまざまな種類のファイルを処理するため、このエラーの発生が予想される場合は、ユーザーにフォールバックを提供することをお勧めします。たとえば、ファイルをデスクトップに保存してそこで開けるようなオプションをユーザーに提供することができます。

完全な例

Association Launching サンプルのページをご覧ください。

関連トピック

タスク
ファイルのアクティブ化を処理する方法
URI に応じて既定のアプリを起動する方法
ガイドライン
ファイルの種類と URI のガイドライン
辞書/リファレンス
Windows.Storage.StorageFile
Windows.System.Launcher.LaunchFileAsync

 

 

表示:
© 2015 Microsoft