Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Извлекает сведения об объекте в файловой системе, например файл, папку, каталог или корневой каталог диска.
Синтаксис
DWORD_PTR SHGetFileInfoW(
[in] LPCWSTR pszPath,
DWORD dwFileAttributes,
[in, out] SHFILEINFOW *psfi,
UINT cbFileInfo,
UINT uFlags
);
Параметры
[in] pszPath
Тип: LPCTSTR
Указатель на строку null- завершенную строку максимальной длины MAX_PATH, содержащую имя пути и файла. Допустимы абсолютные и относительные пути.
Если параметр
Если параметр uFlags включает флаг SHGFI_USEFILEATTRIBUTES, этот параметр не должен быть допустимым именем файла. Функция будет продолжаться, как если файл существует с указанным именем и атрибутами файла, переданными в параметре dwFileAttributes. Это позволяет получить сведения о типе файла, передав только расширение для pszPath и передав FILE_ATTRIBUTE_NORMAL в dwFileAttributes.
Эта строка может использовать короткие (формы 8.3) или длинные имена файлов.
dwFileAttributes
Тип: DWORD
Сочетание одного или нескольких флагов атрибутов файлов (FILE_ATTRIBUTE_ значений, как определено в Winnt.h). Если uFlags не включает флаг SHGFI_USEFILEATTRIBUTES, этот параметр игнорируется.
[in, out] psfi
Тип: SHFILEINFO*
Указатель на структуру SHFILEINFO
cbFileInfo
Тип: UINT
Размер в байтах структуры SHFILEINFO
uFlags
Тип: UINT
Флаги, указывающие данные файла для извлечения. Этот параметр может быть сочетанием следующих значений.
SHGFI_ADDOVERLAYS (0x000000020)
версии 5.0. Примените соответствующие наложения к значку файла. Также необходимо задать флаг SHGFI_ICON.
SHGFI_ATTR_SPECIFIED (0x000020000)
Измените SHGFI_ATTRIBUTES, чтобы указать, что dwAttributes член структуры SHFILEINFO в psfi содержит необходимые атрибуты. Эти атрибуты передаются в IShellFolder::GetAttributesOf. Если этот флаг не указан, 0xFFFFFFFF передается IShellFolder::GetAttributesOf, запрашивая все атрибуты. Этот флаг нельзя указать с помощью флага SHGFI_ICON.
SHGFI_ATTRIBUTES (0x000000800)
Получение атрибутов элемента. Атрибуты копируются в элемент dwAttributes структуры, указанной в параметре psfi. Это те же атрибуты, которые получены из IShellFolder::GetAttributesOf.
SHGFI_DISPLAYNAME (0x000000200)
Получите отображаемое имя файла, имя которого отображается в проводнике Windows. Имя копируется в элемент szDisplayName структуры, указанной в psfi. Возвращаемое отображаемое имя использует длинное имя файла, а не форму 8.3 имени файла. Обратите внимание, что отображаемое имя может повлиять на такие параметры, как отображение расширений.
SHGFI_EXETYPE (0x000002000)
Получите тип исполняемого файла, если pszPath идентифицирует исполняемый файл. Сведения упакованы в возвращаемое значение. Этот флаг нельзя указать с другими флагами.
SHGFI_ICON (0x000000100)
Извлеките дескриптор на значок, представляющий файл и индекс значка в списке системных образов. Дескриптор копируется в элемент hIcon структуры, указанной psfi, и индекс копируется в элемент iIcon.
SHGFI_ICONLOCATION (0x000001000)
Получите имя файла, содержащего значок, представляющий файл, указанный pszPath, как возвращается методом IExtractIcon::GetIconLocation обработчика значков файла. Также извлеките индекс значка в этом файле. Имя файла, содержащего значок, копируется в элемент szDisplayName структуры, указанной psfi. Индекс значка копируется в элемент 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. Возвращает индекс значка наложения. Значение индекса наложения возвращается в верхних восьми битах элемента iIcon структуры, указанной psfi. Для этого флага также требуется задать SHGFI_ICON.
SHGFI_PIDL (0x000000008)
Укажите, что
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)
Получение индекса значка списка системных образов. В случае успешного выполнения индекс копируется в элемент iIconpsfi. Возвращаемое значение — это дескриптор списка системных образов. Допустимы только те изображения, индексы которых успешно копируются в iIcon. Попытка получить доступ к другим изображениям в списке системных образов приведет к неопределенному поведению.
SHGFI_TYPENAME (0x000000400)
Получите строку, описывающую тип файла. Строка копируется в элемент szTypeName структуры, указанной в psfi.
SHGFI_USEFILEATTRIBUTES (0x000000010)
Указывает, что функция не должна пытаться получить доступ к файлу, указанному pszPath. Скорее, он должен действовать так, как если бы файл, указанный pszPath существует с атрибутами файла, переданными в dwFileAttributes. Этот флаг нельзя объединить с флагами SHGFI_ATTRIBUTES, SHGFI_EXETYPEили флагами SHGFI_PIDL.
Возвращаемое значение
Тип: DWORD_PTR
Возвращает значение, значение которого зависит от параметра uFlags.
Если uFlags не содержит SHGFI_EXETYPE или SHGFI_SYSICONINDEX, возвращаемое значение ненулевое, если выполнено успешно, или ноль в противном случае.
Если uFlags содержит флаг SHGFI_EXETYPE, возвращаемое значение указывает тип исполняемого файла. Это будет одно из следующих значений.
| Возвращаемый код | Описание |
|---|---|
|
Неисключаемый файл или условие ошибки. |
|
Приложение Windows. |
|
MS-DOS .exe или файл .com |
|
Консольное приложение или файл .bat |
Замечания
Эту функцию следует вызвать из фонового потока. Сбой этого может привести к остановке реагирования пользовательского интерфейса.
Если
При использовании флага SHGFI_EXETYPE с приложением Windows версия исполняемого файла Windows будет указана в HIWORD возвращаемого значения. Эта версия возвращается в виде шестнадцатеричного значения. Дополнительные сведения о том, как приравнять это значение с определенной версией 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 определяет SHGetFileInfo как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
| Требование | Ценность |
|---|---|
| минимальные поддерживаемые клиентские | Windows XP [только классические приложения] |
| минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
| целевая платформа | Виндоус |
| заголовка | shellapi.h |
| библиотеки |
Shell32.lib |
| DLL | Shell32.dll (версия 4.0 или более поздняя версия) |