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

[Windows 10 の UWP アプリ向けに更新。[ Updated for UWP apps on Windows 10. Windows 8.x の記事については、「アーカイブ」をご覧ください]For Windows 8.x articles, see the archive ]

重要な APIImportant APIs

アプリは、特定のファイルの種類の既定のハンドラーとして登録することができます。An app can register to become the default handler for a certain file type. Windows デスクトップ アプリケーションとユニバーサル Windows プラットフォーム (UWP) アプリの両方を、既定のファイル ハンドラーとして登録できます。Both Windows desktop applications and Universal Windows Platform (UWP) apps can register to be a default file handler. ユーザーがアプリを特定のファイルの種類の既定のハンドラーとして選ぶと、アプリはその種類のファイルを起動したときにアクティブ化されます。If the user chooses your app as the default handler for a certain file type, your app will be activated when that type of file is launched.

ファイルの種類に登録するのは、その種類のファイルのすべてのファイル起動を処理する場合のみにすることをお勧めします。We recommend that you only register for a file type if you expect to handle all file launches for that type of file. アプリをそのファイルの種類に内部的にのみ使う場合、既定のハンドラーに登録する必要はありません。If your app only needs to use the file type internally, then you don't need to register to be the default handler. ファイルの種類に登録する場合は、そのファイルの種類のためにアプリをアクティブ化した際に期待される機能をエンド ユーザーに提供する必要があります。If you do choose to register for a file type, you must provide the end user with the functionality that is expected when your app is activated for that file type. たとえば、.jpg ファイルを表示する画像ビューアー アプリを登録できます。For example, a picture viewer app may register to display a .jpg file. ファイルの関連付けについて詳しくは、「ファイルの種類と URI のガイドライン」をご覧ください。For more info on file associations, see Guidelines for file types and URIs.

以下の手順では、カスタムのファイルの種類 .alsdk を登録する方法と、ユーザーによって .alsdk ファイルが起動されたときにアプリをアクティブ化する方法について説明します。These steps show how to register for a custom file type, .alsdk, and how to activate your app when the user launches an .alsdk file.

UWP アプリでは、組み込みのアプリとオペレーティング システムで使うために、特定の URI とファイル拡張子が予約されています。Note In UWP apps, certain URIs and file extensions are reserved for use by built-in apps and the operating system. 予約されている URI またはファイル拡張子にアプリを登録しようとしても無視されます。Attempts to register your app with a reserved URI or file extension will be ignored. 詳しくは、「予約済みのファイルと URI スキーム名」をご覧ください。For more information, see Reserved file and URI scheme names.

ステップ 1: パッケージ マニフェストに拡張点を指定するStep 1: Specify the extension point in the package manifest

アプリは、パッケージ マニフェストに一覧表示されるファイル拡張子のアクティブ化イベントだけを受け取ります。The app receives activation events only for the file extensions listed in the package manifest. アプリが .alsdk 拡張子を持つファイルを処理することを示す方法は次のとおりです。Here's how you indicate that your app handles the files with the .alsdk extension.

  1. ソリューション エクスプローラーで、package.appxmanifest をダブルクリックしてマニフェスト デザイナーを開きます。In the Solution Explorer, double-click package.appxmanifest to open the manifest designer. [宣言] タブを選び、[使用可能な宣言] ドロップダウンから [ファイルの種類の関連付け] を選んで [追加] をクリックします。Select the Declarations tab and in the Available Declarations drop-down, select File Type Associations and then click Add. ファイルの関連付けで使われる識別子について詳しくは、「プログラムの識別子」をご覧ください。See Programmatic Identifiers for more details of identifiers used by file associations.

    マニフェスト デザイナーで指定することができる各フィールドについて、以下で簡単に説明します。Here is a brief description of each of the fields that you may fill in the manifest designer:

フィールドField 説明Description
表示名Display Name ファイルの種類のグループの表示名を指定します。Specify the display name for a group of file types. 表示名は、コントロール パネル[既定のプログラムを設定する] でファイルの種類を識別するために使われます。The display name is used to identify the file type in the Set Default Programs on the Control Panel.
ロゴLogo デスクトップとコントロール パネル[既定のプログラムを設定する] でファイルの種類を識別するために使われるロゴを指定します。Specify the logo that is used to identify the file type on the desktop and in the Set Default Programs on the Control Panel. ロゴを指定しない場合は、アプリケーションの小さいロゴが使われます。If no Logo is specified, the application’s small logo is used.
InfoTipInfo Tip ファイルの種類のグループの InfoTip を指定します。Specify the info tip for a group of file types. このヒントのテキストは、ユーザーがこの種類のファイルのアイコンの上にマウス ポインターを置くと表示されます。This tool tip text appears when the user hovers on the icon for a file of this type.
名前Name 同じ表示名、ロゴ、InfoTip、編集フラグを共有するファイルの種類のグループの名前を選びます。Choose a name for a group of file types that share the same display name, logo, info tip, and edit flags. このグループ名は、アプリの更新後も維持される名前にします。Choose a group name that can stay the same across app updates. 名前はすべて小文字である必要があります。Note The Name must be in all lower case letters.
コンテンツの種類Content Type 特定のファイルの種類の MIME コンテンツの種類 (image/jpeg など) を指定します。Specify the MIME content type, such as image/jpeg, for a particular file type. 許可されるコンテンツの種類に関する重要な注意: MIME コンテンツの種類のうち、application/force-downloadapplication/octet-streamapplication/unknownapplication/x-msdownload は予約または禁止されているため、パッケージ マニフェストに入力できません。Important Note about allowed content types: Here is an alphabetic list of MIME content types that you cannot enter into the package manifest because they are either reserved or forbidden: application/force-download, application/octet-stream, application/unknown, application/x-msdownload.
ファイルの種類File type 登録するファイルの種類を指定します。先頭にはピリオドを付けます (例: ".jpeg")。Specify the file type to register for, preceded by a period, for example, “.jpeg”. 予約および禁止されているファイルの種類: 予約または禁止されているために UWP アプリを登録できない組み込みアプリ用のファイルの種類の一覧 (アルファベット順) については、「予約済みのファイルと URI スキーム名」をご覧ください。Reserved and forbidden file types: See Reserved URI scheme names and file types for an alphabetic list of file types for built-in apps that you can't register for your UWP apps because they are either reserved or forbidden.
  1. [名前]alsdk と入力します。Enter alsdk as the Name.
  2. [ファイルの種類].alsdk と入力します。Enter .alsdk as the File Type.
  3. [ロゴ] に「images\Icon.png」と入力します。Enter “images\Icon.png” as the Logo.
  4. Ctrl + S キーを押して、変更を package.appxmanifest に保存します。Press Ctrl+S to save the change to package.appxmanifest.

上記の手順により、次のような Extension 要素がパッケージ マニフェストに追加されます。The steps above add an Extension element like this one to the package manifest. windows.fileTypeAssociation カテゴリは、アプリが .alsdk 拡張子を持つファイルを処理することを示しています。The windows.fileTypeAssociation category indicates that the app handles files with the .alsdk extension.

      <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: 適切なアイコンを追加するStep 2: Add the proper icons

ファイルの種類の既定となるアプリは、そのアイコンがシステムのさまざまな場所に表示されます。Apps that become the default for a file type have their icons displayed in various places throughout the system. アイコンは、たとえば次の場所に表示されます。For example, these icons are shown in:

  • エクスプローラーの項目ビュー、コンテキスト メニュー、リボンWindows Explorer Items View, context menus, and the Ribbon
  • [既定のプログラム] コントロール パネルDefault programs Control Panel
  • ファイル ピッカーFile picker
  • スタート画面での検索結果Search results on the Start screen

ロゴがこれらの場所に表示されるように、プロジェクトに 44 x 44 のアイコンを含めます。Include a 44x44 icon with your project so that your logo can appear in those locations. アプリのタイルのロゴの外観を調和させ、アイコンを透明にするのではなく、アプリの背景色を使います。Match the look of the app tile logo and use your app's background color rather than making the icon transparent. パディングせずにロゴを端まで拡張します。Have the logo extend to the edge without padding it. アイコンは、白い背景でテストします。Test your icons on white backgrounds. アイコンについて詳しくは、「タイルとアイコン アセットのガイドライン」をご覧ください。See Guidelines for tile and icon assets for more details about icons.

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

OnFileActivated イベント ハンドラーは、すべてのファイル アクティブ化イベントを受け取ります。The OnFileActivated event handler receives all file activation events.

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^ args)
{
       // TODO: Handle file activation
       // The number of files received is args->Files->Size
       // The first file is args->Files->GetAt(0)->Name
}
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
}

Note When launched via File Contract, make sure that Back button takes the user back to the screen that launched the app and not to the app's previous content.

新しいページを開くアクティブ化イベントごとにアプリで新しい XAML フレームを作成することをお勧めします。It is recommended that apps create a new XAML Frame for each activation event that opens a new page. こうすると、新しい XAML フレームのナビゲーション バックスタックに、中断されたときに現在のウィンドウに表示されていた以前のコンテンツが含まれなくなります。This way, the navigation backstack for the new XAML Frame will not contain any previous content that the app might have on the current window when suspended. 起動コントラクトとファイル コントラクトで単一 XAML フレームを使うことにしたアプリは、新しいページに移動する前にフレームのナビゲーション ジャーナルにあるページをクリアする必要があります。Apps that decide to use a single XAML Frame for Launch and File Contracts should clear the pages on the Frame's navigation journal before navigating to a new page.

ファイル アクティブ化によって起動されたときは、アプリの先頭ページに戻ることができる UI を含めることを検討してください。When launched via File activation, apps should consider including UI that allows the user to go back to the top page of the app.

注釈Remarks

受け取るファイルは、信頼できないソースからのファイルである可能性があります。The files that you receive could come from an untrusted source. 操作する前に、ファイルのコンテンツを検証することをお勧めします。We recommend that you validate the content of a file before taking action on it. 入力の検証について詳しくは、安全なコードの記述をご覧ください。For more info on input validation, see Writing Secure Code

この記事は、ユニバーサル Windows プラットフォーム (UWP) アプリを作成する Windows 10 開発者を対象としています。Note This article is for Windows 10 developers writing Universal Windows Platform (UWP) apps. Windows 8.x 用または Windows Phone 8.x 用の開発を行っている場合は、アーカイブされているドキュメントをご覧ください。If you’re developing for Windows 8.x or Windows Phone 8.x, see the archived documentation.

完全な例Complete example

概念Concepts

処理手順Tasks

ガイドラインGuidelines

リファレンスReference