Изменение контекстного меню файлов и каталогов
Конечно,
можно попытаться добавлять к каждому расширению команду, но это сделать
практически нереально (сколько всего править придется...). Но, есть способ
лучше! В ветви 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. Можете попробовать там покопаться, главное не
забудьте предохраня... эээ, сохраняться! А если у вас что-то получится,
напишите мне, я обязательно доработаю статью.