Функция 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
Категория
Оболочка