次の方法で共有


IExtractIconA インターフェイス (shlobj_core.h)

クライアントがフォルダー内のいずれかのオブジェクトに関連付けられているアイコンを取得できるようにするメソッドを公開します。

継承

IExtractIcon インターフェイスは、IUnknown インターフェイスから継承されます。 IExtractIcon には、次の種類のメンバーもあります。

メソッド

IExtractIconA インターフェイスには、これらのメソッドがあります。

 
IExtractIconA::Extract

指定した場所からアイコン イメージを抽出します。 (ANSI)
IExtractIconA::GetIconLocation

アイコンの場所とインデックスを取得します。 (ANSI)

解説

オブジェクトのアイコンを取得するには、2 つの方法があります。 最も簡単な方法は、 SHGetFileInfo を呼び出す方法です。 ただし、この方法は柔軟性がなく、遅くなる可能性があります。 アイテムのアイコンを取得するより柔軟で効率的な方法は、 IExtractIcon を使用することです。 シェルは IExtractIcon を使用して、フォルダーの内容を表示するときにアイコンを取得します。 IExtractIcon を使用してオブジェクトのアイコンを取得するには、次の操作を行います。

  1. オブジェクトを含むフォルダーの IShellFolder インターフェイスへのポインターを取得します。
  2. オブジェクトの項目識別子リスト (PIDL) へのポインターと IExtractIcon (IID_IExtractIcon) のインターフェイス ID を指定して、IShellFolder::GetUIObjectOf を呼び出します。 フォルダーは、アイコンの抽出を処理するオブジェクトを作成し、オブジェクトの IExtractIcon インターフェイス ポインターを返します。
  3. アイコンの場所 を取得するには、IExtractIcon::GetIconLocation を呼び出します。
  4. アイコンのハンドルを取得するには、 IExtractIcon::Extract を呼び出します。
また、バックグラウンド スレッドでアイコンを非同期的に抽出することもできます。 この方法は、抽出が時間のかかる操作である場合に便利です。 詳細については、「 IExtractIcon::GetIconLocation」を参照してください。

名前空間拡張機能、IExtractIcon を実装して、オブジェクトのアイコンを提供します。 クライアントは、フォルダーの IShellFolder::GetUIObjectOf メソッドを呼び出して、フォルダー内のオブジェクトの IExtractIcon インターフェイス ポインターを取得します。 IShellFolder::GetUIObjectOf 実装では、アイコン抽出を処理し、オブジェクトの IExtractIcon インターフェイスへのポインターを返すオブジェクトを作成する必要があります。

アイコン ハンドラーでは、IExtractIcon も実装されます。 アイコン ハンドラーは、ファイルの種類のメンバーにアイコンを動的に割り当てできるようにするシェル拡張ハンドラーの 一種です

アプリケーションで SHGetFileInfo よりもオブジェクトのアイコンを取得するより柔軟な方法が必要な場合は、このインターフェイスを呼び出します。

注意

shlobj_core.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして IExtractIcon を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

   
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー shlobj_core.h