次の方法で共有


サムネイル ハンドラー

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

手記

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

 

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 はまずサムネイル キャッシュで画像を確認します。 画像がキャッシュに見つからない場合は、サムネイル抽出器が呼び出されます。 また、イメージの最終変更時刻がキャッシュ内のコピーの時刻より後の場合にも呼び出されます。

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

  • 32 x 32
  • 96 x 96
  • 256 x 256
  • 1024 x 1024

手記

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

 

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

特定のサイズの画像が要求されると、完全に一致するものが見つからない限り、Windows Vista は常に次の最大のイメージを取得し、要求されたサイズに縮小します。 以前のバージョンの Windows の場合と同様に、イメージのサイズが拡大されることはありません。

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

指定した最大イメージ サイズ エクストラクターによって要求されたサイズ ユーザーが指定する
156 x 120 256 x 256 156 x 120 (パッドなし、縦横比を維持)
2048x1024 256 x 256 256 x 128 (パッドなし、縦横比を維持)

 

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

HKEY_CLASSES_ROOT
   .{ProgId}
      ThumbnailCutoff

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

価値 期限 HighDPI Sensitive
0 32 x 32 はい
1 16 x 16 はい
2 48 x 48 はい
3 16 x 16 はい

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値が含まれています。

  • ISVComponent.dll,-155などのリソース参照 (DLL に埋め込まれた .ico ファイル) の場合、そのイメージはそのファイル名拡張子を持つファイルのオーバーレイとして使用されます。 この例では、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

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

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