Функция SHGetFileInfo

Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" _
    (ByVal pszPath As Any, _
    ByVal dwFileAttributes As Long, _
    psfi As SHFILEINFO, _
    ByVal cbFileInfo As Long, _
    ByVal uFlags As Long) As Long

SHGetFileInfo получает информацию об объекте файловой системы в оболочке системы - файл, папка, виртуальная папка, диск

Возвращаемое значение

Возвращаемое значение зависит от используемого флага uFlags. Если uFlags содержит SHGFI_EXETYPE, функция возвращает значение, указывающее на тип исполняемого файла. Если младшее и старшее слово не равны 0, то это приложение Windows. Если младшее слово имеет ненулевое значение, а старшее равно нулю, то файл является программой MS-DOS или bat-файлом или консольным приложением 32-битной Windows. В случае ошибки возвращается 0.
Если uFlags содержит флаг SHGFI_SYSICONINDEX, функция возвращает дескриптор списка изображений, содержащий значок, запрашиваемый функцией. В случае ошибки возвращается 0.
Если используются другие флаги, то в успешном случае возвращается ненулевое значение, а в случае ошибки возвращается 0

Параметры

pszPath
Имя файла, папки, диска для получения информации. Если uFlags содержит флаг SHGFI_PIDL, тогда это указатель на структуру ITEMIDLIST (PIDL), определяющий файловый объект. Если uFlags содержит флаг SHGFI_USEFILEATTRIBUTES, то параметр не ссылается на конкретный файл; вместо этого функция получает атрибуты существующего типа файла (по его расширению)
dwFileAttributes
Если uFlags содержит флаг SHGFI_USEFILEATTRIBUTES, то параметр является комбинацией следующих флагов, определяющих атрибуты файла (если флаг не определен, то параметр игнорируется)
FILE_ATTRIBUTE_ARCHIVE = &H20
Архивный файл (большинство файлов имеет этот атрибут)
FILE_ATTRIBUTE_COMPRESSED = &H800
Сжатый файл
FILE_ATTRIBUTE_DIRECTORY = &H10
Папка (а не файл)
FILE_ATTRIBUTE_HIDDEN = &H2
Скрытый атрибут
FILE_ATTRIBUTE_NORMAL = &H0
Без атрибутов (не комбинируется с другими атрибутами)
FILE_ATTRIBUTE_READONLY = &H1
Только для чтения
FILE_ATTRIBUTE_SYSTEM = &H4
Системный атрибут
psfi
Структура, получающая информацию о файле
cbFileInfo
Размер структуры psfi в байтах
uFlags
Комбинация следующих флагов, определяющих вид получаемой информации:
SHGFI_ATTRIBUTES = &H800
Возвращает атрибуты файлового объекта для структуры
SHGFI_DISPLAYNAME = &H200
Возвращает имя объекта, используемого оболочкой
SHGFI_EXETYPE = &H2000
Возвращает тип исполняемого файла. Результат возвращается самой функцией. Нельзя использовать с другими файлами
SHGFI_ICON = &H100
Возвращает дескриптор значка. После использования данного дескриптора ваша программа должна вызвать DestroyIcon для освобождения ресурсов
SHGFI_ICONLOCATION = &H1000
Возвращает имя файла, содержащего значок
SHGFI_LARGEICON = &H0
При использовании SHGFI_ICON, функция возвращает большой значок
SHGFI_LINKOVERLAY = &H8000
При использовании SHGFI_ICON, функция добавляет метку ссылки на значок (стрелку в нижнем углу значка)
SHGFI_OPENICON = &H2
При использовании SHGFI_ICON функция использует значок, используемый при открывании файла
SHGFI_PIDL = &H8
Сигнализирует, что pszPath содержит PIDL вместо имени файла
SHGFI_SELECTED = &H10000
При использовании SHGFI_ICON функция изменяет цвет значка (как при выделении значка)
SHGFI_SHELLICONSIZE = &H4
При использовании SHGFI_ICON возвращается размер значка, используемой оболочкой вместо стандартного размера значка
SHGFI_SMALLICON = &H1
При использовании SHGFI_ICON возвращается маленький значок
SHGFI_SYSICONINDEX = &H4000
Возвращает индект значка в системном списке изображений. Функция возвращает дескриптор это списка
SHGFI_TYPENAME = &H400
Возвращает имя типа файла
SHGFI_USEFILEATTRIBUTES = &H10
Вместо использования имени существующего файла, pszPath задает имя возможного файла и dwFileAttributes, определяют атрибуты файла. Функция ведет себя так, будто файл существует и получает заданную информацию. Нельзя использовать с SHGFI_ATTRIBUTES, SHGFI_EXETYPE или SHGFI_PIDL

Пример

' Получим информацию о файле с расширением MP3
' Пусть заданный файл даже не существует, но для функции это не важно,
' если заданный тип файла существует в системе

' Покажем большой и маленькие значки, ассоциированные с файлом

Смотри пример icons.zip

Категория

Оболочка