Страницы

Поиск по вопросам

четверг, 6 июня 2019 г.

Создание Shell Extentions

Здравствуйте, Уважаемые Хэшкодовцы! Благодаря Вам узнал об альтернативных потоках данных для файлов на NTFS системе. Благодаря интернету научился с ними работать через командную строку. Может кому интересно: echo some file > file.txt создали/перезаписали информацию в файлу "file.txt" текстом "some file" echo some description > file.txt:desc создали/перезаписали альтернативный поток с именем "desc" для файла "file.txt" more < file.txt type file.txt отобразили в окне консоли информацию содержащейся в файле "file.txt". В нашем случае "some file" more < file.txt:desc отобразили в окне консоли информацию из альтернативного потока с именем desc. dir /r отобразили список всех файлов в текущем каталоге с их альтернативными потоками В общем выше была лирика, это может кому пригодится. Теперь собственно сам вопрос: Как реализовать окно свойств, которое отобразит данные из альтернативного потока В интернете нахожу много информации, как реализовать свою Shell Extentions. Но информации очень много на английском языке (или я просто не могу найти аналогичной информации на русском), что сильно затрудняет поиски решения с моими познаниями "вражеского" языка. Многие примеры рассказывают как перехватить выполнение команды, как добавить в контекстное меню файлов свои пункты, но это все не то. Мне нужно открыть окно свойств файла, в открывшемся окне свойств добавить свою закладку с конкретным именем, на закладке расположить компонент позволяющий просматривать текстовую информацию (ну пусть скажем это будет RichTextView) ну и поместить туда информацию из альтернативного потока с конкретным именем. Как читать информацию из альтернативного потока примеры я нашел, думаю разберусь самостоятельно, а вот реализацией персональной закладки свойств для файла - увы не получается. На всякий случай уточню, расширений файлов будет несколько, для которых данное окно свойств должно появиться (ну например это будут .ex1, .ex2), и если есть такая возможность, окно свойств не отображать, в случае если альтернативного потока данных с нужным именем отсутствует у файла). Забегая немного вперед, хотел бы еще возможность отображать окно свойств для нескольких выбранных файлов, но с этим сначала попробую сам разобраться. Что собственно хочу от вас? Желательно ссылку на документацию по моей проблеме. Как я понял, махинаций которые можно вытворять при помощи Shell Extentions навалом, человеку который этим никогда не занимался - темный лес. Если есть конкретный пример подобной реализации на c# - буду признателен. Желательно конечно, чтобы код не был навороченным, достаточно самых основ, далее будем плясать от печки по принципу удочки. Ну и самое "здоровское" для меня, как для начала изучения проблемы - это подсказка, с чего начать писать модуль? Какие интерфейсы должны быть реализованы? PS: Если все это будет еще и на русском языке - вообще вам цены не будет =) Заранее спасибо, что дочитали все это до конца, и за ваши ответы.


Ответ

В силу ряда проблем Microsoft не рекомендует писать расширения для обозревателя с помощью управляемого кода и не планирует поддерживать разработку подобных расширений. На неуправляемом коде добавление страницы свойств происходит согласно руководству (на английском): How to Register and Implement a Property Sheet Handler for a File Type Если все же браться за расширение на C#, то в качестве исходной точки можно взять готовый проект на C# (на английском): Property Sheet Shell Extension in C#

Комментариев нет:

Отправить комментарий