次の方法で共有


SHGetFileInfoA 関数 (shellapi.h)

ファイル、フォルダー、ディレクトリ、ドライブ ルートなど、ファイル システム内のオブジェクトに関する情報を取得します。

構文

DWORD_PTR SHGetFileInfoA(
  [in]      LPCSTR      pszPath,
            DWORD       dwFileAttributes,
  [in, out] SHFILEINFOA *psfi,
            UINT        cbFileInfo,
            UINT        uFlags
);

パラメーター

[in] pszPath

型: LPCTSTR

パスとファイル名を含む最大長MAX_PATHの null終了文字列へのポインター。 絶対パスと相対パスの両方が有効です。

uFlags パラメーターに SHGFI_PIDL フラグが含まれている場合、このパラメーターは、シェルの名前空間内のファイルを一意に識別する項目識別子のリストを含む ITEMIDLIST (PIDL) 構造体のアドレスである必要があります。 PIDL は完全修飾 PIDL である必要があります。 相対 PIDL は使用できません。

uFlags パラメーターに SHGFI_USEFILEATTRIBUTES フラグが含まれている場合、このパラメーターは有効なファイル名である必要はありません。 この関数は、指定した名前のファイルが存在し、dwFileAttributes パラメーターで渡されたファイル属性を使用して続行されます。 これにより、pszPath の拡張子だけを渡し、dwFileAttributesFILE_ATTRIBUTE_NORMAL を渡すことで、ファイルの種類に関する情報を取得できます。

この文字列では、短い (8.3 形式) または長いファイル名を使用できます。

dwFileAttributes

型: DWORD

1 つ以上の ファイル属性フラグの組み合わせ (Winnt.h で定義されている値FILE_ATTRIBUTE_)。 uFlags SHGFI_USEFILEATTRIBUTES フラグが含まれていない場合、このパラメーターは無視されます。

[in, out] psfi

型: SHFILEINFO

ファイル情報を受信する SHFILEINFO 構造体へのポインター。

cbFileInfo

型: UINT

psfi パラメーターによって指 SHFILEINFO 構造体のサイズ (バイト単位)。

uFlags

型: UINT

取得するファイル情報を指定するフラグ。 このパラメーターには、次の値の組み合わせを指定できます。

SHGFI_ADDOVERLAYS (0x000000020)

バージョン 5.0を します。 ファイルのアイコンに適切なオーバーレイを適用します。 SHGFI_ICON フラグも設定する必要があります。

SHGFI_ATTR_SPECIFIED (0x000020000)

SHGFI_ATTRIBUTES を変更して、dwAttributes psfi にある SHFILEINFO 構造体のメンバー 必要な特定の属性が含まれていることを示します。 これらの属性は、IShellFolder::GetAttributesOfに渡されます。 このフラグが指定されていない場合、0xFFFFFFFFは IShellFolder::GetAttributesOfに渡され、すべての属性が要求されます。 このフラグは、SHGFI_ICON フラグでは指定できません。

SHGFI_ATTRIBUTES (0x000000800)

項目属性を取得します。 属性は、psfi パラメーターで指定された構造体のメンバー dwAttributes にコピーされます。 これらは、IShellFolder::GetAttributesOfから取得されるのと同じ属性です。

SHGFI_DISPLAYNAME (0x000000200)

ファイルの表示名 (Windows エクスプローラーに表示される名前) を取得します。 この名前は、psfiで指定された構造体の szDisplayName メンバー コピーされます。 返される表示名は、ファイル名の 8.3 形式ではなく、長いファイル名 (ある場合) を使用します。 表示名は、拡張機能が表示されるかどうかなどの設定によって影響を受ける可能性があることに注意してください。

SHGFI_EXETYPE (0x000002000)

pszPath が実行可能ファイル 識別する場合は、実行可能ファイルの種類を取得します。 情報は戻り値にパックされます。 このフラグは、他のフラグと共に指定することはできません。

SHGFI_ICON (0x000000100)

システム イメージ リスト内のアイコンのファイルとインデックスを表すアイコンのハンドルを取得します。 このハンドルは、psfiで指定された構造体の hIcon メンバー コピーされ、インデックスは iIcon メンバーにコピーされます。

SHGFI_ICONLOCATION (0x000001000)

ファイルのアイコン ハンドラーの IExtractIcon::GetIconLocation メソッドによって返される、pszPathで指定されたファイルを表すアイコンを含むファイルの名前を取得します。 また、そのファイル内のアイコン インデックスも取得します。 アイコンを含むファイルの名前は、psfiで指定された構造体の szDisplayName メンバー コピーされます。 アイコンのインデックスは、その構造体の iIcon メンバーにコピーされます。

SHGFI_LARGEICON (0x000000000)

SHGFI_ICONを変更すると、関数はファイルの大きなアイコンを取得します。 SHGFI_ICON フラグも設定する必要があります。

SHGFI_LINKOVERLAY (0x000008000)

SHGFI_ICONを変更すると、関数はファイルのアイコンにリンク オーバーレイを追加します。 SHGFI_ICON フラグも設定する必要があります。

SHGFI_OPENICON (0x000000002)

SHGFI_ICONを変更し、関数がファイルの開いているアイコンを取得します。 また、SHGFI_SYSICONINDEXを変更するためにも使用され、関数はファイルの小さな開いているアイコンを含むシステム イメージ リストにハンドルを返します。 コンテナー オブジェクトには、コンテナーが開かれていることを示す開いているアイコンが表示されます。 SHGFI_ICON フラグまたは SHGFI_SYSICONINDEX フラグも設定する必要があります。

SHGFI_OVERLAYINDEX (0x000000040)

バージョン 5.0を します。 オーバーレイ アイコンのインデックスを返します。 オーバーレイ インデックスの値は、psfiで指定された構造体の iIcon メンバーの上位 8 ビット 返されます。 このフラグでは、SHGFI_ICON も設定する必要があります。

SHGFI_PIDL (0x000000008)

pszPath パス名ではなく、ITEMIDLIST 構造体のアドレスであることを示します。

SHGFI_SELECTED (0x000010000)

SHGFI_ICONを変更すると、関数はファイルのアイコンとシステムの強調表示の色をブレンドします。 SHGFI_ICON フラグも設定する必要があります。

SHGFI_SHELLICONSIZE (0x000000004)

SHGFI_ICONを変更して、関数がシェル サイズのアイコンを取得します。 このフラグが指定されていない場合、関数はシステム メトリック値に従ってアイコンのサイズを変更します。 SHGFI_ICON フラグも設定する必要があります。

SHGFI_SMALLICON (0x000000001)

SHGFI_ICONを変更し、関数がファイルの小さなアイコンを取得します。 また、SHGFI_SYSICONINDEXを変更するためにも使用され、関数は小さなアイコンイメージを含むシステムイメージリストにハンドルを返します。 SHGFI_ICON フラグまたは SHGFI_SYSICONINDEX フラグも設定する必要があります。

SHGFI_SYSICONINDEX (0x000004000)

システム イメージ リスト アイコンのインデックスを取得します。 成功した場合、インデックスは psfiの iIcon メンバー コピーされます。 戻り値は、システム・イメージ・リストへのハンドルです。 インデックスが iIcon に正常にコピーされたイメージのみが有効です。 システム イメージ リスト内の他のイメージにアクセスしようとすると、未定義の動作が発生します。

SHGFI_TYPENAME (0x000000400)

ファイルの型を記述する文字列を取得します。 この文字列は、psfiで指定された構造体の szTypeName メンバー コピーされます。

SHGFI_USEFILEATTRIBUTES (0x000000010)

pszPathで指定されたファイルへのアクセスを関数が試行しないことを示します。 代わりに、pszPath で指定されたファイルが、dwFileAttributesで渡されたファイル属性 存在するかのように動作する必要があります。 このフラグは、SHGFI_ATTRIBUTESSHGFI_EXETYPE、または SHGFI_PIDL フラグと組み合わせることはできません。

戻り値

型: DWORD_PTR

uFlags パラメーターに依存する意味を持つ値を返します。

uFlagsSHGFI_EXETYPE または SHGFI_SYSICONINDEXが含まれていない場合、戻り値は成功した場合は 0 以外、それ以外の場合は 0 になります。

uFlags SHGFI_EXETYPE フラグが含まれている場合、戻り値は実行可能ファイルの種類を指定します。 次のいずれかの値になります。

リターン コード 形容
0
実行できないファイルまたはエラー条件。
LOWORD = NE または PE および HIWORD = Windows バージョン
Windows アプリケーション。
LOWORD = MZ および HIWORD = 0
ファイルの MS-DOS .exe または.com
LOWORD = PE および HIWORD = 0
コンソール アプリケーションまたは .bat ファイル

備考

この関数は、バックグラウンド スレッドから呼び出す必要があります。 これを行わないと、UI の応答が停止する可能性があります。

shGetFileInfo 、psfiが指す SHFILEINFO 構造体の hIcon メンバーのアイコン ハンドル 返す場合は、不要になったときに DestroyIcon で解放する必要があります。

システム イメージ リストへのハンドルが完成したら、Image List API を使用して、他のイメージ リストと同様に操作できます。 システム イメージ リストはプロセスごとに作成されるため、読み取り専用オブジェクトとして扱う必要があります。 システム・イメージ・リストに書き込むと、システム・イメージの 1 つが上書きまたは削除され、プロセスの残りの部分では使用不可または誤りになる可能性があります。
 
SHGetFileInfoを呼び出す前に、CoInitialize または oleInitialize を使用してコンポーネント オブジェクト モデル (COM) 初期化する必要があります。

Windows アプリケーションで SHGFI_EXETYPE フラグを使用する場合、Windows バージョンの実行可能ファイルは、戻り値の HIWORD で指定されます。 このバージョンは 16 進値として返されます。 この値を特定の Windows バージョンと等しくする方法の詳細については、「Windows ヘッダーの使用 」を参照してください。

次のコード例では、SHGetFileInfo を使用して、その PIDL で識別されるごみ箱の表示名を取得します。

LPITEMIDLIST pidl = NULL;
hr = SHGetFolderLocation(NULL, CSIDL_BITBUCKET, NULL, 0, &pidl);

if (SUCCEEDED(hr))                    
{
    SHFILEINFOW sfi = {0};
    hr = SHGetFileInfo((LPCTSTR)pidl,
                        -1,
                        &sfi,
                        sizeof(sfi),
                        SHGFI_PIDL | SHGFI_DISPLAYNAME)
            
    if (SUCCEEDED(hr))
    {
        // The display name is now held in sfi.szDisplayName.
    }
}

ILFree(pidl);

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー shellapi.h
ライブラリ Shell32.lib
DLL Shell32.dll (バージョン 4.0 以降)

関連項目

FileIconInit