Share via


サムネイル ハンドラー

Windows Vista では、以前のバージョンの Windows よりもファイル固有のサムネイル イメージを使用しています。 Windows Vista では、すべてのビュー、ダイアログ、およびそれらを提供するすべてのファイルの種類で使用されます。 他のアプリケーションでもサムネイルを使用できます。 サムネイルの表示も変更されました。 Windows XP で提供されるアイコンやサムネイルなどの個別のサイズではなく、ユーザーが選択できるサイズの連続したスペクトルを使用できるようになりました。

Note

ライブ アイコンと呼ばれるこれらのサムネイルが読み上げられる場合があります。

 

Windows Vista UI では、32 ビット解像度と 256 x 256 ピクセルのサムネイルが使用されることがよくあります。 ファイル形式の所有者は、そのサイズでサムネイルを表示する準備をする必要があります。 また、特定のファイルの内容を反映するサムネイル用の非静的画像も提供する必要があります。 たとえば、テキスト ファイルのサムネイルには、テキストを含む、ドキュメントのミニチュア バージョンが表示されます。

IThumbnailProvider インターフェイスが導入され、IExtractImage が代わりに使用されていた場合に、以前よりも簡単かつ簡単にサムネイルを提供できるようになりました。 IExtractImage を使用する既存のコードは、Windows Vista では引き続き有効であることに注意してください。 ただし、[詳細] ウィンドウでは IExtractImage はサポートされていません。

このトピックでは、以下の項目について説明します。

サムネイル プロセス

サムネイル ハンドラーを含むハンドラーは、別のプロセスで既定で実行されます。 次に示すように、IShellItem::BindToHandler の呼び出しでバインド コンテキストとして NULL 値を渡すことで、ハンドラーをインプロセスで強制的に実行できます。

IShellItem::BindToHandler(NULL, BHID_ThumbnailHandler,..)

この例に示すように、レジストリで DisableProcessIsolation エントリを設定することで、既定でプロセスの実行をオプトアウトすることもできます。 クラス識別子 (CLSID) {E357FCCD-A995-4576-B01F-234630154E96} は 、IThumbnailProvider 実装の CLSID です。

HKEY_CLASSES_ROOT
   CLSID
      {E357FCCD-A995-4576-B01F-234630154E96}
         DisableProcessIsolation = 1

サムネイル キャッシュとサイズ設定

サムネイルが必要な場合、Windows は最初に画像のサムネイル キャッシュをチェックします。 イメージがキャッシュに見つからない場合は、サムネイル抽出器が呼び出されます。 また、イメージの最終変更時刻がキャッシュ内のコピーよりも後の場合にも呼び出されます。

このキャッシュ内のサムネイル 画像は、個別のサイズのセットに格納されます。 すべてのサイズはピクセル単位で指定されます。

  • 32x32
  • 96 x 96
  • 256 x 256
  • 1,024 x 1,024

Note

これらの値は変更される可能性があります。 コードでは、特定のサイズが常に使用されると想定しないでください。

 

画像が正方形でない場合は、自分で埋め込むべきではありません。 Windows は、元の縦横比を尊重し、画像を正方形のサイズに埋め込む役割を担います。

特定のサイズのイメージが要求されると、完全に一致するものがない限り、Windows Vista は常に次の最大のイメージを取得し、要求されたサイズにスケールダウンします。 以前のバージョンの Windows の場合と同様に、イメージのサイズがスケールアップされることはありません。

次の表に、要求されたサイズと使用可能なサイズの関係の例をいくつか示します。

指定した最大イメージ サイズ 抽出器によって要求されたサイズ 指定する
156x120 256 x 256 156 x 120 (縦横比を維持、埋め込まない)
2048x1024 256 x 256 256 x 128 (パッドなし、縦横比を維持)

 

関連付けられたアプリのプログラム ID エントリの一部として、レジストリでカットオフ ポイントを宣言できます。 このサイズより下では、サムネイルは使用されません。

HKEY_CLASSES_ROOT
   .{ProgId}
      ThumbnailCutoff

ThumbnailCutoff エントリは、次のREG_DWORD値のいずれかです。

Cutoff HighDPI Sensitive
0 32x32 はい
1 16x16 はい
2 48 x 48 はい
3 16x16 はい

1 インチあたりのドット数 (dpi) の感度が高いということは、サムネイルのピクセルサイズが dpi を大きくするために自動的に調整されることを意味します。 たとえば、96 dpi の 32 x 32 イメージは、120 dpi の 40 x 40 イメージになります。

ThumbnailCutoff エントリが指定されていない場合、既定のカットオフは 20 x 20 です (dpi に依存しません)。

サムネイル オーバーレイ

サムネイルオーバーレイは、サムネイルの右下隅に表示される小さな画像で、開発者がブランド識別をサムネイルに適用する機会を提供します。 オーバーレイは、次に示すように、関連付けられたアプリのプログラム ID エントリの一部としてレジストリで宣言されます。

HKEY_CLASSES_ROOT
   .{ProgId}
      TypeOverlay

TypeOverlay エントリには、次のように解釈されるREG_SZ値が含まれています。

  • 値が などのリソース参照 (DLL に埋め込まれた .ico ファイル) ISVComponent.dll,-155の場合、そのイメージはそのファイル名拡張子を持つファイルのオーバーレイとして使用されます。 この例では 、155 がリソース ID であり、DLL が標準パス ( C:/Windows/System32 など) に存在しない場合は、DLL 名だけでなく完全パスが必要であることに注意してください。
  • 値が空の文字列の場合、イメージにオーバーレイは適用されません。
  • 値が存在しない場合は、関連付けられているアプリケーションの既定のアイコンが使用されます。

サムネイルのオーバーレイは、このメカニズムを介してのみ提供し、Windows によって適用する必要があります。 オーバーレイは自分で適用しないでください。

サムネイルの装飾

ドロップ シャドウなどの装飾は、ユーザーが現在選択しているテーマに基づいてサムネイルに適用されます。 装飾は Windows によって提供されます。自分で作成しないでください。 Windows では、特定の装飾の外観がいつでも変更される可能性があるため、所有している場合は、システムとの同期が失われるリスクがあります。 サムネイルが日付や場所から外れる可能性があります。

潜在的な装飾は、次に示すように、関連付けられたアプリのプログラム ID エントリの一部としてレジストリで宣言されます。

HKEY_CLASSES_ROOT
   .{ProgId}
      Treatment

[処理] エントリには、次のいずれかのREG_DWORD値が含まれます。

説明
0 装飾なし
1 ドロップ シャドウ
2 写真の罫線
3 ビデオ・ギア

既定では、ドロップ シャドウがイメージに適用されます。

サムネイル ハンドラーの登録

サムネイル ハンドラーの登録は、標準ファイルの関連付けに基づいています。

サムネイル ハンドラーシェル拡張機能の GUID は です E357FCCD-A995-4576-B01F-234630154E96

IThumbnailProvider

サムネイル ハンドラーの構築

サムネイル ハンドラーのガイドライン