Необходимо отобразить информацию о файле собственного формата в статусной строке проводника Windows. Да и не только в статусной, а также на панели слева, где инфа о размере, типе и т.п.
Как пример, mp3-файл — о нем отображается битрейт, размер, исполнитель, название, а также тип файла, напр. Winamp Media File..
FK>Необходимо отобразить информацию о файле собственного формата в статусной строке проводника Windows. Да и не только в статусной, а также на панели слева, где инфа о размере, типе и т.п.
Здравствуйте, frid-karatel, Вы писали:
FK>Необходимо отобразить информацию о файле собственного формата в статусной строке проводника Windows. Да и не только в статусной, а также на панели слева, где инфа о размере, типе и т.п.
FK>Как пример, mp3-файл — о нем отображается битрейт, размер, исполнитель, название, а также тип файла, напр. Winamp Media File.. http://rsdn.ru/article/winshell/shlext3.xml
Здравствуйте, frid-karatel, Вы писали:
FK>Необходимо отобразить информацию о файле собственного формата в статусной строке проводника Windows. Да и не только в статусной, а также на панели слева, где инфа о размере, типе и т.п.
FK>Как пример, mp3-файл — о нем отображается битрейт, размер, исполнитель, название, а также тип файла, напр. Winamp Media File..
Если коротко, то механизм такой:
Для указания списка отображаемых свойств используются ключи реестра
Details,InfoTip,QuickTip,TileInfo() (например в HKEY_CLASSES_ROOT\SystemFileAssociations\audio)
Значение такого ключа представляет собой список имен свойств вида 'prop:Name;Size;Type;Artist;Album;Year;Track;Duration' или 'prop:{GUID}index;...'
Данные из файлов извлекаются с помощью IPropertySetStorage(имена свойств — с помощью IPropertyStorage::ReadPropertyNames)
Алгоритм поиска реализации IPropertySetStorage приблизительно такой:
Сначала выполняется поиск т.н. 'metadata handler' — специальный тип shell ext.,
иначе, если это COM compound file(*.doc и т.п.) — то данные извлекаются непосредственно из файла(StgOpenStorageEx),
иначе поиск выполняется в NTFS streams(если применимо)
И только потом эти данные становятся доступными для explorer'a. Плюс, в эту последовательность могут вмешиваться некоторые другие shell ext(Infotip/Thumbnail)
Собственно для поставленой задачи (если это не NSE) необходима реализация metadata handler'a:
IPersistFile + IPropertySetStorage, + регистрация в реестре для типа файла'...shellex/PropertyHandler'
Другой, малопригодный вариант — записывать данные в NTFS потоки.
Здравствуйте, Юрий Жмеренецкий, Вы писали:
... ЮЖ>Данные из файлов извлекаются с помощью IPropertySetStorage(имена свойств — с помощью IPropertyStorage::ReadPropertyNames)
Наврал: в контекстве обсуждения IPropertyStorage::ReadPropertyNames не используется — имена используемых в реестре свойств — это well known FMTID(некоторые есть в описании структуры SHCOLUMNID в MSDN, + в заголовочных файлах SDK), для пользовательских необходимо использовать синтаксис '{GUID}index'