Изменение контекстного меню файлов и каталогов
В статье о регистрации новых
типов файлов был рассмотрен вопрос о добавлении
стандартного действия к файлам, которые
не были определены в Windows. Если интересно,
то рекомендую сначала прочесть ту
статью, чтобы легче было воспринять
изложенное ниже. А в этой статье пойдет
вопрос о добавлении к контекстному меню
ВСЕХ файлов и папок каких-то действий. Вы,
наверное, обратили внимание на новые
пункты, появляющиеся при установке WinRAR'a.
А вот как их добавлять самому?
Аналогичный вопрос мне попадался на
каком-то форуме, вот я и решил написать
небольшое руководство :). Интересно?
Тогда поехали.
Конечно, можно попытаться
добавлять к каждому расширению команду,
но это сделать практически нереально (сколько
всего править придется...). Но, есть
способ лучше! В ветви HKEY_CLASSES_ROOT есть
раздел с названием "*". Если в нем
добавить пункт, то он будет применяться
ко всем расширениям файлов. Давайте я
попробую проиллюстрировать это на
примере добавления пункта меню на
архивацию файла. Открывайте раздел
HKEY_CLASSES_ROOT\*\ и создавайте там подраздел shell
(у меня его не было). В нем надо создать
подраздел с каким-то уникальным именем -
я назвал его arj. В параметре "По
умолчанию" этого раздела надо ввести
название пункта меню, которое будет у
вас выводиться на экране. Задаем "Архивировать
ARJ". Теперь в разделе arj надо
создать раздел command, в параметре "По
умолчанию" которого надо ввести
выполняемую команду, т.е. "arj a arc %1".
Здесь arc - имя нашего архива, а %1 -
передает в качестве параметра имя файла,
на котором мы кликнули мышкой. Конечно,
здорово было бы создавать архив с именем
выбранного файла, но я не знаю, как из
передаваемого параметра вычленить это
имя (оно передается вместе с путем, а это
вызывает ошибку архиватора). Если кто-то
знает, как это сделать и поделится
информацией, я буду очень рад.
Для наглядности напишу, как это
все будет выглядеть в reg-файле:
REGEDIT4
[HKEY_CLASSES_ROOT\*\shell\arj]
@="Архивировать ARJ"
[HKEY_CLASSES_ROOT\*\shell\arj\command]
@="arj a arc %1"
Что любопытно: если файл не
зарегистрированного типа, то это
действие будет использоваться для него
по умолчанию. Т.е. вы можете щелкнуть по
нему дважды мышкой, и файл будет
автоматически заархивирован. Для
зарегистрированных файлов этот пункт
надо выбирать из контекстного меню.
Таким образом можно сделать открытие
незарегистрированных файлов в блокноте,
достаточно ввести в параметр "По
умолчанию" раздела command строку "notepad.exe
%1". Теперь по даблклику такие файлы
будут автоматически открываться в
блокноте!
А как же быть с каталогами? Их мы
тоже не обойдем стороной. Ищите в
HKEY_CLASSES_ROOT раздел Folder.
Последовательность действий для него
аналогична описанному выше. Только,
лучше если вы используете команду "arj a
arc %1 -r" чтобы архивировалось с
сохранением дерева вложенных каталогов.
Теперь вы сможете
модифицировать это меню под себя так,
как вам будет удобно. Правда, есть и
некоторые ограничения: вы сможете
добавлять пункты только в первый блок
меню (они разделяются горизонтальной
линией). Добавление в другие блоки
видимо, возможно, но как это сделать я не
нашел. Дело в том, что у внешних программ,
добавляющих туда пункт меню,
используется в качестве параметра "По
умолчанию" код CLSID для модуля ActiveX. Эти
пункты добавляются в подраздел shellex.
Можете попробовать там покопаться,
главное не забудьте предохраня... эээ,
сохраняться!:-)
|
|