Мітки в Вісті - дубль два

Мітки в Вісті - дубль два

Жахнувшись великою кількістю ненависті з попередньої статті, я вирішив трохи скрасити конфуз з мітками для користувачів Вісти. Ну насправді, якось зовсім недобре вийшло - тим більше, що сам давно хотів це зробити, та руки все не доходили...

Отже, зустрічаємо - Tagg!

Що ж це таке?

Це - розширення оболонки Windows, що дозволяє прив'язувати до файлу додаткові властивості. Поки таких властивостей рівно 3 штуки - теги, коментар і рейтинг. При бажанні можна було б додати й інші, але треба було на чомусь зупинитися.

Значення зберігаються в альтернативному NTFS-потоці під назвою TaggData, абсолютно непомітні для користувача і прозорі для системи. Якщо тільки у Вас немає параноїдального антивірусу, для якого існує прихована загроза від XML-ки в файловому потоці.

Як це працює?

Для початку бібліотека Tagg.dll реєструється в системі як COM-об'єкт за допомогою команди regsvr32 (зрозуміло, з-під адміністратора). Після чого з'являється запис про клас під кодовою назвою {09ECDDF2-61C3-4bb6-88C6-70BC292AD0EC}.

Наступний крок - це вказати, які розширення файлів повинні оброблятися нашим фільтром. На жаль, у Vista не можна вказати глобальний обробник властивостей для всіх файлів, тому доведеться додати всі необхідні розширення в гілку HKLM\Software\Microsoft\Windows\CurrentVersion\PropertySystem\PropertyHandlers. Там вже є якісь розширення, так що додаємо за аналогією.

Якщо для якогось типу файлів вже зареєстрований обробник - не біда. Його CLSID достатньо «перемістити» в додатковому ключі реєстру Fallback, а в дефолтному ключі вказати наш CLSID - тоді Tagg доповнить існуючий набір властивостей своїми.

Тепер необхідно сказати, де і в яких випадках має показуватися властивість для кожного типу файлів.

B Windows Vista, як і в її попередниці, властивості для типів файлів задаються в реєстрі у вигляді рядка типу "prop:System.ItemType;System.Size;...». Для кожного випадку, будь то підказка, тайл або детальна інформація, передбачений свій рядок з властивостями.

Відповідно, потрібно вставити в ці рядки властивості, потрібні нам - System.Keywords, System.Comment і System.Rating. І тут теж є підстава - ці рядки теж вельми розкидані за реєстром. Ось, наприклад, основні місця в порядку пріоритету - HKCR\SystemFileAssociation, HKCR, HKCR\*. Так що доведеться трохи попітніти, вишукуючи потрібне місце... (hint: при бажанні можна написати утиліту для цього;))

Досить слів!

Для прикладу додамо теги до png-файлу.

Отже, почнемо з прив'язки до розширення.

Як видно, у нього вже був обробник, тому старий перенесений в Fallback.

Тепер трохи змінимо рядок властивостей для preview-а...

і... вуаля!

Можна змінювати і додавати теги...

… групувати і фільтрувати за ними...

… шукати і розкладати (досі не знаю, як тут правильно перевести «stack»)...

Також вони чудово інтегруються в існуючі програми, на кшталт Photo Gallery...

… або Snipping Tool...

Ну, і сам лінк на длл-ку: злив, рапіда, whatever you want)

UPD: версія 1.0.0.2 тут і тут. Виправлено порожній з рандомним рейтингом в експлорері.

Від досконалості поки далеченько (ручна реєстрація стомлива), але вже цілком юзабільно.

І до речі, всіх з днем закоханих! Менше ненависті і кармокастрації, більше любові і креативу!

COM_SPPAGEBUILDER_NO_ITEMS_FOUND