Инфо о файле в статусе Проводника
От: frid-karatel  
Дата: 23.07.08 16:15
Оценка:
Необходимо отобразить информацию о файле собственного формата в статусной строке проводника Windows. Да и не только в статусной, а также на панели слева, где инфа о размере, типе и т.п.

Как пример, mp3-файл — о нем отображается битрейт, размер, исполнитель, название, а также тип файла, напр. Winamp Media File..
Re: Инфо о файле в статусе Проводника
От: x64 Россия  
Дата: 23.07.08 16:51
Оценка:
FK>Необходимо отобразить информацию о файле собственного формата в статусной строке проводника Windows. Да и не только в статусной, а также на панели слева, где инфа о размере, типе и т.п.

Думаю, начать стоит отсюда — IShellFolder2::GetDetailsOf.
Re: Инфо о файле в статусе Проводника
От: Conr Россия  
Дата: 24.07.08 04:19
Оценка:
Здравствуйте, frid-karatel, Вы писали:

FK>Необходимо отобразить информацию о файле собственного формата в статусной строке проводника Windows. Да и не только в статусной, а также на панели слева, где инфа о размере, типе и т.п.


FK>Как пример, mp3-файл — о нем отображается битрейт, размер, исполнитель, название, а также тип файла, напр. Winamp Media File..

http://rsdn.ru/article/winshell/shlext3.xml
Автор(ы): Michael Dunn
Дата: 31.05.2001
— через этот же механизм проводник достает информацию в статусную строку
http://rsdn.ru/article/winshell/shlext8.xml
Автор(ы): Michael Dunn
Дата: 05.01.2002
Re: Инфо о файле в статусе Проводника
От: Юрий Жмеренецкий ICQ 380412032
Дата: 24.07.08 09:14
Оценка:
Здравствуйте, 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 потоки.

PS. в висте по другому.
ipropertysetstorage
Re[2]: Инфо о файле в статусе Проводника
От: Юрий Жмеренецкий ICQ 380412032
Дата: 24.07.08 09:27
Оценка:
Здравствуйте, Юрий Жмеренецкий, Вы писали:
...
ЮЖ>Данные из файлов извлекаются с помощью IPropertySetStorage(имена свойств — с помощью IPropertyStorage::ReadPropertyNames)

Наврал: в контекстве обсуждения IPropertyStorage::ReadPropertyNames не используется — имена используемых в реестре свойств — это well known FMTID(некоторые есть в описании структуры SHCOLUMNID в MSDN, + в заголовочных файлах SDK), для пользовательских необходимо использовать синтаксис '{GUID}index'
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.