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

重要な API

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

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

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

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

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

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

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

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

フィールド 説明
表示名 ファイルの種類のグループの表示名を指定します。 表示名は、コントロール パネル[既定のプログラムを設定する] でファイルの種類を識別するために使われます。
ロゴ デスクトップとコントロール パネル[既定のプログラムを設定する] でファイルの種類を識別するために使われるロゴを指定します。 ロゴを指定しない場合は、アプリケーションの小さいロゴが使われます。
InfoTip ファイルの種類のグループの InfoTip を指定します。 このヒントのテキストは、ユーザーがこの種類のファイルのアイコンの上にマウス ポインターを置くと表示されます。
名前 同じ表示名、ロゴ、InfoTip、編集フラグを共有するファイルの種類のグループの名前を選びます。 このグループ名は、アプリの更新後も維持される名前にします。 名前はすべて小文字である必要があります。
コンテンツの種類 特定のファイルの種類の MIME コンテンツの種類 (image/jpeg など) を指定します。 許可されるコンテンツの種類に関する重要な注意事項: 次に示すのは、パッケージマニフェストに入力できない MIME コンテンツタイプのアルファベット順です。 アプリケーション/フォースダウンロードアプリケーション/オクテットストリームアプリケーション/不明アプリケーション/x-msdownloadのいずれかです。
ファイルの種類 登録するファイルの種類を指定します。先頭にはピリオドを付けます (例: ".jpeg")。 予約および禁止されているファイルの種類: 予約または禁止されているために UWP アプリを登録できない組み込みアプリ用のファイルの種類の一覧 (アルファベット順) については、「予約済みのファイルと URI スキーム名」をご覧ください。
  1. alsdk名前として「」と入力します。
  2. [ファイルの種類].alsdk と入力します。
  3. \ロゴとして「imagesIcon.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.Size
       // 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 フレームのナビゲーションバックスタックには、中断されたときに、アプリが現在のウィンドウに保持している可能性がある以前のコンテンツは含まれません。 起動とファイルコントラクトに対して1つの XAML フレーム を使用する場合は、新しいページに移動する前に、 フレームのナビゲーション履歴のページをクリアする必要があります。

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

注釈

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

コード例全体

概念

タスク

ガイドライン

参照先