次の方法で共有


Windows アプリでファイルのアクティブ化を処理する

アプリを登録して、特定の種類のファイルの既定のハンドラーにすることができます。 Windows デスクトップ アプリケーションと WinUI アプリはどちらも、既定のファイル ハンドラーとして登録できます。 ユーザーが特定のファイルの種類の既定のハンドラーとしてアプリを選択した場合、その種類のファイルが起動されるとアプリがアクティブになります。

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

これらの手順では、カスタム ファイルの種類 .alsdk に登録する方法と、ユーザーが .alsdk ファイルを起動したときにアプリをアクティブ化する方法を示します。

Windows では、特定の URI とファイル拡張子は、組み込みのアプリとオペレーティング システムで使用するために予約されています。 予約済みの URI またはファイル拡張子でアプリを登録しようとすると無視されます。 アプリに登録できない URI スキームが予約済みまたは禁止されているために登録できない URI スキームのアルファベット順の一覧については、「予約済み URI スキーム名とファイルの種類 」を参照してください。

重要な API

このトピックでは、次の API を使用します。

手順 1: パッケージ マニフェストで拡張ポイントを指定する

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

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

    マニフェスト デザイナーに入力できる各フィールドの簡単な説明を次に示します。

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

上記の手順では、次のような 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: 適切なアイコンを追加する

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

  • Windows エクスプローラーのアイテム ビュー、コンテキスト メニュー、リボン
  • 既定のプログラムのコントロール パネル
  • ファイル選択ツール
  • スタート画面の検索結果

プロジェクトに 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
}
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
}

ファイル コントラクトを使用して起動するときに、[戻る] ボタンをクリックすると、アプリを起動した画面にユーザーが戻り、アプリの以前のコンテンツに戻らないようにします。

WinUI アプリでは、App.OnLaunched (または実際にはいつでも) で (AppInstance.GetActivatedEventArgs) を呼び出してアクティブ化されたイベント引数を取得し、それらを確認してアプリのアクティブ化方法を確認できます。 UWP アプリと WinUI アプリのライフサイクルの違いの詳細については、「 アプリケーション ライフサイクル機能の移行 」を参照してください。

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

ファイルのアクティブ化を使用してアプリを起動する場合は、ユーザーがアプリのトップ ページに戻る UI を含めるかどうかを検討する必要があります。

注釈

受信するファイルは、信頼されていないソースから取得される可能性があります。 アクションを実行する前に、ファイルの内容を検証することをお勧めします。