ファイルのアクティブ化の処理

重要な API

アプリは、特定のファイルの種類の既定のハンドラーとして登録することができます。 Windows デスクトップ アプリケーションとユニバーサル Windows プラットフォーム (UWP) アプリの両方を、既定のファイル ハンドラーとして登録できます。 ユーザーがアプリを特定のファイルの種類の既定のハンドラーとして選ぶと、アプリはその種類のファイルを起動したときにアクティブ化されます。

ファイルの種類に登録するのは、その種類のファイルのすべてのファイル起動を処理する場合のみにすることをお勧めします。 アプリをそのファイルの種類に内部的にのみ使う場合、既定のハンドラーに登録する必要はありません。 ファイルの種類に登録する場合は、そのファイルの種類のためにアプリをアクティブ化した際に期待される機能をエンド ユーザーに提供する必要があります。 たとえば、.jpg ファイルを表示する画像ビューアー アプリを登録できます。 ファイルの関連付けについて詳しくは、「ファイルの種類と URI のガイドライン」をご覧ください。

以下の手順では、カスタムのファイルの種類 .alsdk を登録する方法と、ユーザーによって .alsdk ファイルが起動されたときにアプリをアクティブ化する方法について説明します。

UWP アプリでは、組み込みのアプリとオペレーティング システムで使うために、特定の URI とファイル拡張子が予約されています。 予約されている URI またはファイル拡張子にアプリを登録しようとしても無視されます。 詳しくは、「予約済みのファイルと URI スキーム名」をご覧ください。

ステップ 1: パッケージ マニフェストに拡張点を指定する

アプリは、パッケージ マニフェストに一覧表示されるファイル拡張子のアクティブ化イベントだけを受け取ります。 アプリが .alsdk 拡張子を持つファイルを処理することを示す方法は次のとおりです。

  1. ソリューション エクスプローラーで、package.appxmanifest をダブルクリックしてマニフェスト デザイナーを開きます。 [宣言] タブを選び、[使用可能な宣言] ドロップダウンから [ファイルの種類の関連付け] を選んで [追加] をクリックします。 ファイルの関連付けで使われる識別子について詳しくは、「プログラムの識別子」をご覧ください。

    マニフェスト デザイナーで指定することができる各フィールドについて、以下で簡単に説明します。

フィールド 説明
表示名 ファイルの種類のグループの表示名を指定します。 表示名は、コントロール パネル[既定のプログラムを設定する] でファイルの種類を識別するために使われます。
ロゴ デスクトップとコントロール パネル[既定のプログラムを設定する] でファイルの種類を識別するために使われるロゴを指定します。 ロゴを指定しない場合は、アプリケーションの小さいロゴが使われます。
InfoTip ファイルの種類のグループの InfoTip を指定します。 このヒントのテキストは、ユーザーがこの種類のファイルのアイコンの上にマウス ポインターを置くと表示されます。
名前 同じ表示名、ロゴ、InfoTip、編集フラグを共有するファイルの種類のグループの名前を選びます。 このグループ名は、アプリの更新後も維持される名前にします。 名前はすべて小文字である必要があります。
コンテンツの種類 特定のファイルの種類の MIME コンテンツの種類 (image/jpeg など) を指定します。 許可されるコンテンツの種類に関する重要な注意: MIME コンテンツの種類のうち、application/force-downloadapplication/octet-streamapplication/unknownapplication/x-msdownload は予約または禁止されているため、パッケージ マニフェストに入力できません。
ファイルの種類 登録するファイルの種類を指定します。先頭にはピリオドを付けます (例: ".jpeg")。 予約および禁止されているファイルの種類: 予約または禁止されているために UWP アプリを登録できない組み込みアプリ用のファイルの種類の一覧 (アルファベット順) については、「予約済みのファイルと URI スキーム名」をご覧ください。
  1. [名前]alsdk と入力します。
  2. [ファイルの種類] に「」と入力.alsdkします。
  3. [ロゴ] に「images\Icon.png」と入力します。
  4. Ctrl + S キーを押して、変更を package.appxmanifest に保存します。

上記の手順により、次のような Extension 要素がパッケージ マニフェストに追加されます。 windows.fileTypeAssociation カテゴリは、アプリが .alsdk 拡張子を持つファイルを処理することを示しています。

      <Extensions>
        <uap:Extension Category="windows.fileTypeAssociation">
          <uap:FileTypeAssociation Name="alsdk">
            <uap:Logo>images\icon.png</uap:Logo>
            <uap:SupportedFileTypes>
              <uap:FileType>.alsdk</uap:FileType>
            </uap:SupportedFileTypes>
          </uap:FileTypeAssociation>
        </uap:Extension>
      </Extensions>

ステップ 2: 適切なアイコンを追加する

ファイルの種類の既定となるアプリは、そのアイコンがシステムのさまざまな場所に表示されます。 アイコンは、たとえば次の場所に表示されます。

  • エクスプローラーの項目ビュー、コンテキスト メニュー、リボン
  • [既定のプログラム] コントロール パネル
  • ファイル ピッカー
  • スタート画面での検索結果

ロゴがこれらの場所に表示されるように、プロジェクトに 44 x 44 のアイコンを含めます。 アプリのタイルのロゴの外観を調和させ、アイコンを透明にするのではなく、アプリの背景色を使います。 パディングせずにロゴを端まで拡張します。 アイコンは、白い背景でテストします。 アイコンについて詳しくは、「タイルとアイコン アセットのガイドライン」をご覧ください。

ステップ 3: アクティブ化イベントを処理する

OnFileActivated イベント ハンドラーは、すべてのファイル アクティブ化イベントを受け取ります。

protected override void OnFileActivated(FileActivatedEventArgs args)
{
       // TODO: Handle file activation
       // The number of files received is args.Files.Count
       // The name of the first file is args.Files[0].Name
}
Protected Overrides Sub OnFileActivated(ByVal args As Windows.ApplicationModel.Activation.FileActivatedEventArgs)
      ' TODO: Handle file activation
      ' The number of files received is args.Files.Size
      ' The name of the first file is args.Files(0).Name
End Sub
void App::OnFileActivated(Windows::ApplicationModel::Activation::FileActivatedEventArgs const& args)
{
    // TODO: Handle file activation.
    auto numberOfFilesReceived{ args.Files().Size() };
    auto nameOfTheFirstFile{ args.Files().GetAt(0).Name() };
}
void App::OnFileActivated(Windows::ApplicationModel::Activation::FileActivatedEventArgs^ args)
{
    // TODO: Handle file activation
    // The number of files received is args->Files->Size
    // The name of the first file is args->Files->GetAt(0)->Name
}

注意

ファイル コントラクトを介して起動した場合、戻るボタンが使われたときは、アプリの以前のコンテンツに戻るのではなく、アプリを起動した画面に戻るようにする必要があります。

新しいページを開くアクティブ化イベントごとに、新しい XAML フレームを作成することをお勧めします。 こうすると、新しい XAML フレームのナビゲーション バックスタックに、中断されたときに現在のウィンドウに表示されていた以前のコンテンツが含まれなくなります。 起動コントラクトとファイル コントラクトで単一 XAML フレームを使うことにした場合は、新しいページに移動する前にフレームのナビゲーション ジャーナルにあるページをクリアする必要があります。

ファイル アクティブ化によってアプリを起動するときは、アプリの先頭ページに戻ることができる UI を含めることを検討してください。

注釈

受け取るファイルは、信頼できないソースからのファイルである可能性があります。 操作する前に、ファイルのコンテンツを検証することをお勧めします。

コード例全体

概念

タスク

ガイドライン

リファレンス