» Контекстное меню файлов и папок

Контекстное меню файлов и папок

Вы, наверное, обратили внимание на новые пункты контекстного меню файлов и каталогов, появляющиеся при установке архиватора Win RAR. А вот как их добавлять самому? Все делается довольно просто, особенно если вы прочитали предыдущий раздел. Только в этот раз мы будем добавлять пункт меню не для одного файла, а сразу для всех.
В разделе hkey_classes_root есть подраздел с именем * (без кавычек). Если для него добавить пункт контекстного меню, то он будет применяться ко всем расширениям файлов. Давайте попробуем добавить пункт меню на архивацию файла. Откройте раздел hkey_classes_root\*\ и создайте там подраздел shell (если его еще нет). В нем надо создать подраздел с каким-то уникальным именем (в примере используется название arj). В параметре По умолчанию этого раздела надо задать название пункта меню, которое будет выводиться на экране. Присвоим значение Архивировать arj. Теперь в разделе arj надо создать раздел command, в параметре По умолчанию которого надо ввести выполняемую команду, например arj a arc %i. Здесь arc — имя нашего архива, которое будет присваиваться по умолчанию, а %i — передает в качестве параметра имя файла, контекстное меню которого мы открыли. Чтобы эта команда работала, необходимо поместить файл arj.exe в один из системных каталогов, перечисленных в переменной окружения Path, либо добавить имя каталога с файлом к каталогам в Path.

Для добавления своего каталога нужно отредактировать значение переменной, щелкнув по кнопке Переменные среды на вкладке Дополнительно диалога Свойства системы. Откроется диалог Переменные среды, В области Системные переменные найдите переменную Path и дважды кликните по ней либо выделите ее и нажмите кнопку Изменить. Откроется диалог Изменение системной переменной, где в попе Значение переменной надо добавить через точку с запятой имя нужного каталога.

Пример добавления пункта в контекстное меню файлов

[HKEY_CLASSES_ROOTS*\shell\arj] @=Архивировать ARJ

[HKEY_CLASSES_R0OT\*\shell\arj \command] 3=arj a arc %1

Файл с примером добавления пункта меню add_conL_menu.reg вы найдете на компакт-диске, прилагаемом к книге.

Что любопытно — если запустить файл не зарегистрированного типа, то это действие будет использоваться для него по умолчанию, т. е. вы можете щелкнуть по нему дважды мышью, и файл будет автоматически за архивирован. Для зарегистрированных файлов этот пункт надо выбирать из контекстного меню. Таким образом, можно сделать автоматическое открытие незарегистрированных файлов в Блокноте, достаточно ввести в параметр По умолчанию раздела command строку notepad.exe \%1\. Теперь по двойному щелчку такие файлы будут автоматически открываться в Блокноте.

Если вы все-таки хотите сделать открытие незарегистрированных файлов в Блокноте, лучше воспользоваться разделом HKEY_CLASSES_ROOT\unknown, который как раз отвечает за все эти файлы.

А как же быть с каталогами? Их мы тоже не обойдем вниманием. Ищите в hkey_classes_root раздел Folder. Последовательность действий для него аналогична описанному выше. Только лучше использовать команду arj a arc %l, чтобы архивирование происходило с сохранением дерева вложенных каталогов.

Таким образом вы сможете модифицировать контекстное меню файлов и каталогов под себя так, как вам будет удобно. Правда, есть и некоторые ограничения: вы сможете добавлять пункты только в первый блок меню (они разделяются горизонтальной линией). Добавление в другие блоки возможно, но это гораздо сложнее. Другие программы, добавляющие туда свои пункты меню, используют в качестве параметра По умолчанию код идентификатора класса (CLSID) для вызова dtl- или ехе-файла с целью обработки выбранного пункта меню. Эти пункты добавляются в подразделе sheiiex.

В предыдущем разделе упоминалось о добавлении пунктов контекстного меню в подраздел shellex реестра. В Windows уже заложено несколько дополнительных пунктов для расширения этого меню, не включенных по умолчанию (к сожалению, это работает только в Windows 2000 и Windows ХР).
В реестре в разделе hkey_classes_root\clsid есть два любопытных подраздела: {C2FBB630-2971-lldl-A18C-00C04FD75D13} и {C2FBB631-2971-lldl-
A18C-00C04FD75D13}. Они отвечают за возможность копирования и перемещения объекта в какой-нибудь каталог. Оба идентификатора класса можно включить в контекстное меню файлов и каталогов.

Контекстное меню файлов

Для включения этих пунктов у всех файлов надо в разделе реестра HKEY_CLASSESjROOT\*\shellex\contextMenuHandlers создать подраздел copyto (имя может быть любое), в параметре По умолчанию которого следует записать значение идентификатора класса для копирования — (C2FBB63 0-297 i-ildl-Ai8c-00C04FD75Di3b Для перемещения создадим подраздел Moveto и запишем в параметре По умолчанию значение {c2FBB63i-297i-iidi-Ai8c-ooc04FD75Di3}.
Если вы хотите добавить эти пункты меню для каких-то определенных расширений файлов, то надо посмотреть, какой раздел указан в параметре По умолчанию в hkey_classes_root для данного расширения, и в разделе sheilex добавить пункты.

Рассмотрим это на примере текстовых файлов. Откройте соответствующий раздел реестра: bkey_classes_root\txt. Параметр По умолчанию ссылается
на раздел txt fiie. Переходим в раздел HKEV_cLASSES_ROOT\txtfile. Если там нет подраздела sheilex, создаем его, а в нем — раздел ContextMenuHan-diers. Дальше последовательность действий аналогична описанной выше. Для добавления пунктов меню к каталогам надо добавить указанные подразделы В раздел HKEY_CLASSES_ROOT\Folder\shellex\CantextMenuHandlers.

После выбора одного из пунктов в контекстном меню открывается диалог Копирование элементов (Перемещение элементов). Копировать или перемещать файлы и каталоги гораздо удобнее с помощью этого диалога.

REGEDIT4 (Пример добавления пунктов Копировать в папку)

[HKEY_CLASSES_ROOT\* SshellexNContextMenuHandlers \Copyto]

@={C2FBB630-2971-lldl-A18C-00C04FD75Dl3}

Перемещение файла

lHKEy_CLASSES_ROOT\*\shellex\ContextMenuHandlei-s\Moveto]

e=4C2FBB631-2971-Uai-A18C-00C04FD75D13)

Копирование каталога

[HKEY_CLASSES_ROOT\ Fol der \ she 11 ех\ Con textMemiHandlers\Copytо]

@={C2FBB630-2971-lldl-A18C-00C04ro75D13}

Перемещение каталога

[HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\Moveto]

a={C2FBB631-2971-lldl-AlSC-00C04FD75O13}

Пункты меню появятся сразу после импорта данных в реестр, перезагрузка компьютера не понадобится.

Реклама

Реклама