ファイルのアクティブ化を処理する方法 (HTML)

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

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

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

  

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

手順

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

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

  1. ソリューション エクスプローラーで、package.appxmanifest をダブルクリックして開きます。

    ファイルの関連付けで使われる識別子について詳しくは、「プログラムの識別子」をご覧ください。パッケージ マニフェストで指定することができる各フィールドについて、以下で簡単に説明します。

    フィールド 説明

    コンテンツの種類

    特定のファイルの種類の MIME コンテンツの種類 (image/jpeg など) を指定します。

    許可されるコンテンツの種類に関する重要な注意:  MIME コンテンツの種類のうち、application/force-downloadapplication/octet-streamapplication/unknown, application/x-msdownload は予約または禁止されているため、パッケージ マニフェストに入力できません。

    名前

    同じ表示名、ロゴ、InfoTip、編集フラグを共有するファイルの種類のグループの名前を選びます。このグループ名は、アプリの更新後も維持される名前にします。

      名前はすべて小文字である必要があります。
     

    InfoTip

    ファイルの種類のグループの InfoTip を指定します。 このヒントのテキストは、ユーザーがこの種類のファイルのアイコンの上にマウス ポインターを置くと表示されます。

    編集フラグ

    ファイルの種類のグループの編集フラグを指定します。編集フラグでは、信頼できないソースからファイルを取得する場合のアクセス方法を制御します。 OpenIsSafe フラグは、どのダウンロード ファイルについても、そのファイルの種類に対して Open 動詞を安全に呼び出せることを示します。 AlwaysUnsafe フラグは、ファイルの種類に対して Open 動詞を自動的に呼び出すオプションを無効にすることを示します。 ユーザーは、[ファイルの種類] ダイアログ ボックスを使ってこの属性を上書きできます。このフラグを使うと、OpenIsSafe が考慮されなくなります。該当の種類の信頼できないファイルを開くときに、セキュリティ ダイアログの [今後確認しない] チェック ボックスをオンにすることができなくなります。

    表示名

    ファイルの種類のグループの表示名を指定します。 表示名は、コントロール パネル[既定のプログラムを設定する] でファイルの種類を識別するために使われます。

    ロゴ

    デスクトップとコントロール パネル[既定のプログラムを設定する] でファイルの種類を識別するために使われるロゴを指定します。ロゴを指定しない場合は、アプリケーションの小さいロゴが使われます。

    ファイルの種類

    登録するファイルの種類を指定します。先頭にはピリオドを付けます (例: ".jpeg")。

    予約および禁止されているファイルの種類

    予約または禁止されているため、アプリを登録できないファイルの種類を以下に示します (アルファベット順)。

      

    Windows ストア アプリの場合

    Accountpicture-msAppxapplicationAppref-msBatCerChmCmdComCplcrtdlldrvExefongadgetHlpHta, InfInsjselnkMsiMspocxpifPs1RegScfScrShbShsSysttfurlVbeVbsWsWscWsfWsh

      

    Windows Phone ストア アプリの場合

    Windows Phone では、組み込みのアプリ用に次のファイルの種類が予約されています。

    aac、aetx、asf、bmp、cer、dotm、dotx、gif、hdp、htm、html、ico、icon、jpeg、jpg、jxr、m4a、m4rm、m4v、mov、mp3、mp4、one、onetoc2、p7b、pem、png、pptm、pptx、qcp、rtf、tif、tiff、txt、url、vcf、wav、wdp、wmv、xap、xht、xhtml、xltm、xltx、xml、xsl、zip

    Windows Phone では、オペレーティング システム用に次のファイルの種類が予約されています。

    ade、adp、app、application、apprefms、asp、bas、bat、cab、chm、cmd、cnt、com、cpf、cpl、crd、crds、crt、csh、der、dll、exe、fxp、gadget、grp、hlp、hme、hpj、hta、inf、ins、isp、its、jar、js、jse、ksh、lnk、mad、maf、mag、mam、maq、mar、mas、mat、mau、mav、maw、mcf、mda、mdb、mde、mdt、mdw、mdz、msc、msh、msh1、msh1xml、msh2、msh2xml、mshxml、msi、msp、mst、msu、ops、pcd、pif、pl、plg、plsc、prf、prg、printerexport、provxml、ps1、ps1xml、ps2、ps2xml、psc1、psc2、psm1、pst、pvw、py、pyc、pyo、rb、rbw、rdp、reg、rgu、scf、scr、shb、shs、theme、tmp、tsk、url、vb、vbe、vbp、vbs、vhd、vhdx、vsmacros、vsw、webpnp、ws、wsc、wsf、wsh、xaml、xdp、xip、xnk

    必要な表示 (Windows のみ)

    このファイルの種類に対して起動されたときにアプリのウィンドウに必要なスペースの量を示すには、[Desired View] フィールドを指定します。[Desired View] に指定できる値は、DefaultUseLessUseHalfUseMore、または UseMinimum です。

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

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

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

     

  2. [宣言] タブをクリックします。

  3. ドロップダウン リストから [ファイルの種類の関連付け] を選んで、[追加] をクリックします。

  4. [名前] に「alsdk」と入力します。

  5. [ファイルの種類] に「.alsdk」と入力します。

  6. [ロゴ] に「images\Icon.png」と入力します。

  7. Ctrl + S キーを押して、変更を package.appxmanifest に保存します。

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

<Package xmlns="https://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="https://schemas.microsoft.com/appx/2013/manifest">
   <Applications>
      <Application Id="AutoLaunch.App">
         <Extensions>
            <Extension Category="windows.fileTypeAssociation">
                <FileTypeAssociation Name="alsdk">
                  <DisplayName>SDK Sample File Type</DisplayName>
                  <Logo>images\logo.png</Logo>
                  <InfoTip>SDK Sample tip </InfoTip>
                  <EditFlags OpenIsSafe="true" />
                  <SupportedFileTypes>
                     <FileType ContentType="image/jpeg">.alsdk</FileType>
                  </SupportedFileTypes>
               </FileTypeAssociation>
            </Extension>
         </Extensions>
      </Application>
   </Applications>
</Package>

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

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

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

これらのすべての場所でロゴが適切に表示されるように、適切なアイコンをプロジェクトと共に含めることをお勧めします。Windows ストア アプリの場合、画像フォルダーには小サイズのロゴとアイコン用に 16、32、48、256 ピクセル版の画像を含めます。Windows Phone ストア アプリの場合は、代わりに 63/129/336 ピクセル版を含めます。カラー プレートが組み込まれたアプリのタイルのロゴと外観が調和するようにし、パディングせずにロゴを端まで拡張します。アイコンは、白い背景でテストします。 サンプルのアイコンについては、関連付けによる起動のサンプル (Windows) に関するページをご覧ください。

ソリューション エクスプローラーで images フォルダー内にあるファイルを表示したようす。Icon.targetsize と smallTile-sdk の両方に 16、32、48、256 の各ピクセルのバージョンがあります。

ステップ 3: activated イベントに登録する

ファイルのアクティブ化を処理するには、activated イベントに登録します。

WinJS.Application.addEventListener("activated", onActivatedHandler, false);

ステップ 4: activated イベントを処理する

手順 1. で登録した activated イベント ハンドラーは、すべてのアクティブ化イベントを受け取ります。kind プロパティは、アクティブ化イベントの種類を示しています。次の例では、file アクティブ化イベントを処理するように設定されています。

function onActivatedHandler(eventArgs) {
   if (eventArgs.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.file) 
   {
       // TODO: Handle file activation.

       // The number of files received is eventArgs.detail.files.size
       // The first file is eventArgs.detail.files[0].name
   }
}

  

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

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

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

注釈

受け取るファイルは、信頼できないソースからのファイルである可能性があります。操作する前に、ファイルのコンテンツを検証することをお勧めします。入力の検証について詳しくは、安全なコードの記述に関するページをご覧ください。

完全な例

関連付けによる起動のサンプル (Windows) に関するページをご覧ください。

関連トピック

概念

既定のプログラム

ファイルの種類とプロトコルの関連付けのモデル

タスク

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

プロトコルのアクティブ化を処理する方法

ガイドライン

ファイルの種類と URI のガイドラインとチェック リスト

辞書/リファレンス

Windows.Storage.StorageFile

Windows.UI.WebUI.WebUIFileActivatedEventArgs

WinJS.Application.onactivated