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