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 の拡張子だけを渡し、dwFileAttributesで FILE_ATTRIBUTE_NORMAL を渡すことで、ファイルの種類に関する情報を取得できます。
この文字列では、短い (8.3 形式) または長いファイル名を使用できます。
dwFileAttributes
型: DWORD
1 つ以上の ファイル属性フラグの組み合わせ (Winnt.h で定義されている値FILE_ATTRIBUTE_)。 uFlags
[in, out] psfi
型: SHFILEINFO
ファイル情報を受信する SHFILEINFO 構造体へのポインター。
cbFileInfo
型: UINT
uFlags
型: UINT
取得するファイル情報を指定するフラグ。 このパラメーターには、次の値の組み合わせを指定できます。
SHGFI_ADDOVERLAYS (0x000000020)
バージョン 5.0を
SHGFI_ATTR_SPECIFIED (0x000020000)
SHGFI_ATTRIBUTES (0x000000800)
項目属性を取得します。 属性は、
SHGFI_DISPLAYNAME (0x000000200)
ファイルの表示名 (Windows エクスプローラーに表示される名前) を取得します。 この名前は、psfiで指定された構造体の
SHGFI_EXETYPE (0x000002000)
pszPath が実行可能ファイル
SHGFI_ICON (0x000000100)
システム イメージ リスト内のアイコンのファイルとインデックスを表すアイコンのハンドルを取得します。 このハンドルは、psfiで指定された構造体の
SHGFI_ICONLOCATION (0x000001000)
ファイルのアイコン ハンドラーの IExtractIcon::GetIconLocation メソッドによって返される、pszPathで指定されたファイルを表すアイコンを含むファイルの名前を取得します。 また、そのファイル内のアイコン インデックスも取得します。 アイコンを含むファイルの名前は、psfiで指定された構造体の
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を
SHGFI_PIDL (0x000000008)
pszPath
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の
SHGFI_TYPENAME (0x000000400)
ファイルの型を記述する文字列を取得します。 この文字列は、psfiで指定された構造体の
SHGFI_USEFILEATTRIBUTES (0x000000010)
pszPathで指定されたファイルへのアクセスを関数が試行しないことを示します。 代わりに、
戻り値
型: DWORD_PTR
uFlags パラメーターに依存する意味を持つ値を返します。
uFlags に SHGFI_EXETYPE または SHGFI_SYSICONINDEXが含まれていない場合、戻り値は成功した場合は 0 以外、それ以外の場合は 0 になります。
uFlags
リターン コード | 形容 |
---|---|
|
実行できないファイルまたはエラー条件。 |
|
Windows アプリケーション。 |
|
ファイルの MS-DOS .exe または.com |
|
コンソール アプリケーションまたは .bat ファイル |
備考
この関数は、バックグラウンド スレッドから呼び出す必要があります。 これを行わないと、UI の応答が停止する可能性があります。
shGetFileInfo
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 以降) |