Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также любые проблемы программирования на различных макроязыках и в скриптовых средах)

Настройка контекстного меню Проводника

Контекстное меню папок и файлов Проводника, которое содержит такие команды, как "Открыть", "Изменить", "Открыть с помощью", "Создать" (с перечнем типов файлов) и т.д., может быть изменено по вашему желанию путём настройки некоторых разделов реестра. Также может быть изменено поведение системы при двойном щелчке на файле любого типа.

Хранение информации о зарегистрированных типах файлов

Информация о каждом зарегистрированном типе файлов и командах, применимых к нему, хранится в ветви реестра HKEY_CLASSES_ROOT. Каждому зарегистрированному типу файлов соответствуют два подраздела в разделе HKEY_CLASSES_ROOT. Первый подраздел имеет название, соответствующее расширению имени файла. В своём значении "по умолчанию" этот подраздел содержит идентификатор, который используется как название второго подраздела. Во втором подразделе хранятся описания команд, применяемых к данному типу файлов. Например, текстовому типу файлов в реестре соответствуют два подраздела - ".txt" и "txtfile". Второй подраздел "txtfile" содержит в своём значении "по умолчанию" текст описания для данного типа файлов (в данном случае - "Текстовый документ"), которое используется системой в различных случаях.

Информация, относящаяся одновременно ко всем типам файлов, хранится в подразделе "*" ветви реестра HKEY_CLASSES_ROOT. Информация, относящаяся ко всем незарегистрированным типам файлов, хранится в подразделе "Unknown" ветви реестра HKEY_CLASSES_ROOT. Информация, относящаяся к папкам, хранится в подразделах "Directory" и "Folder" ветви реестра HKEY_CLASSES_ROOT.

Настройка контекстного меню

Подраздел shell раздела "txtfile" содержит в себе подразделы, определяющие действия над данным типом файлов. Иногда эти подразделы называются "глаголами" (verbs). Если выбрать щелчком правой кнопки мыши файл с расширением "txt", то в контекстном меню будут присутствовать команды, соответствующие существующим глаголам.

Каждый подраздел-глагол может содержать подраздел command. Этот подраздел содержит командную строку в параметре "по умолчанию". Параметр "%1" в командной строке будет заменён путём и именем выбранного файла.

Если в подразделе-глаголе определено значение параметра "по умолчанию", это значение будет использовано как строка в контекстном меню. Если такое значение не определено, то сам глагол (т.е. имя подраздела) будет использован в качестве строки меню. Однако, при использовании некоторых определённых имён глаголов (подразделов) в контекстном меню отображаются предопределённые строки, зависящие от локализованной версии системы. Например, при использовании глагола "open" в контекстном меню может появиться строка "Открыть". Такие глаголы называются каноническими. Для некоторых канонических глаголов вообще не отображается строка меню, например, глагол "printto" зарезервирован для операций drag-and-drop.

Глагол команды "по умолчанию" (т.е. выполняемой при двойном щелчке и выделенной жирным шрифтом в контекстном меню) присутствует в качестве значения "по умолчанию" раздела "shell". Если такое значение не определено, используется канонический глагол "open", какой-либо другой канонический глагол или первый глагол из указанных (перечислено в порядке убывания приоритета).

Порядок команд в меню соответствует расположению глаголов в реестре (только команда "по умолчанию" стоит всегда первой). Для "искусственного" задания порядка команд можно перечислить имена глаголов через запятую в параметре "по умолчанию" раздела "shell".

Примечание: информация в реестре, касающаяся того или иного типа файлов и его глаголов, может быть изменена и без ручной правки реестра - при использовании диалога "Открыть с помощью" ("Выбор программы") с установкой флажка "Использовать для всех файлов такого типа" (вызывается из контекстного меню проводника) или при использовании вкладки "Типы файлов" диалога "Свойства папки" (вызывается из меню "Сервис" - "Свойства папки..." проводника).

Примеры настройки контекстного меню

Создадим команду открытия окна командного интерпретатора из контекстного меню папки с переходом (командой "cd") в эту папку. Это избавит от необходимости каждый раз после запуска (например, из меню "Пуск" - "Выполнить...") окна командного интерпретатора вручную набирать команду "cd" для перехода к нужному каталогу. Укажем в разделе

HKEY_CURRENT_USER\Folder\Shell\MenuText\Command\

значение "по умолчанию", содержащее такую командную строку:

cmd.exe /k cd "%1"

Кроме того, укажем в разделе

HKEY_CURRENT_USER\Folder\Shell\MenuText\

значение "по умолчанию", содержащее наименование команды контекстного меню, например, "Command Prompt Here". На этом команда (новый глагол "MenuText") полностью готова к работе.

Создадим команду открытия файла с незарегистрированным расширением как текстового в кодировке MS-DOS с помощью редактора MS-DOS. Такая команда может пригодиться, например, для быстрого открытия (с правильной интерпретацией кодировки) файлов в формате предоставления отчётности в Пенсионный фонд РФ (такие файлы могут быть автоматически сформированы различными программами, например бухгалтерскими). Укажем в разделе

HKEY_CLASSES_ROOT\Unknown\shell\OpenAsTextMSDOS\command\

значение "по умолчанию", содержащее такую командную строку:

C:\Windows\system32\edit.com "%1"

Кроме того, укажем в разделе

HKEY_CLASSES_ROOT\Unknown\shell\OpenAsTextMSDOS\

значение "по умолчанию", содержащее наименование команды контекстного меню, например, "Открыть как текст MS-DOS". На этом команда (новый глагол "OpenAsTextMSDOS") полностью готова к работе.

Создадим команду открытия MD-файла конфигурации 1С:Предприятия v7.7 двойным щелчком с запуском программы на базе того каталога, в котором находится MD-файл. Такая команда может пригодиться для быстрого запуска 1С:Предприятия при работе с любым файловым менеджером. Для этого в разделе

HKEY_CLASSES_ROOT\.MD\

в параметре "по умолчанию" найдём название второго раздела, который содержит перечень глаголов. Укажем в найденном таким способом разделе

HKEY_CLASSES_ROOT\<ИмяРаздела>\shell\open\command\

значение "по умолчанию", содержащее такую командную строку:

"C:\Program Files\1Cv77\BIN\1cv7s.exe" config /D"%1\.."

Кроме того, укажем в разделе

HKEY_CLASSES_ROOT\<ИмяРаздела>\shell\open\

значение "по умолчанию", содержащее наименование команды контекстного меню, например, "Открыть в конфигураторе". На этом команда (глагол "open") полностью готова к работе. Примечание: аналогичным способом можно создать команды контекстного меню MD-файла "Открыть монитор", "Открыть Предприятие" и "Открыть Предприятие монопольно", используя разные ключи запуска для 1cv7s.exe.

Настройка меню "Создать"

Данное меню открывается, если выбрать команду "Файл" - "Создать" в окне проводника, а также если щёлкнуть правой кнопкой мыши на рабочем столе или проводнике на свободном месте открытой папки и выбрать пункт "Создать". Это меню может быть изменено по вашему желанию путём настройки некоторых разделов реестра.

Заготовки для файлов, которые создаются с помощью меню "Создать", хранятся в каталоге ShellNew в папке WINDOWS. Команды создания файлов содержатся в реестре в разделах

HKEY_CLASSES_ROOT\<ИмяРаздела>\ShellNew\

"ИмяРаздела" совпадает с расширением имени файла, например ".txt". Строковый параметр FileName может содержать имя файла-шаблона, который находится в папке WINDOWS\ShellNew\, например "WINWORD8.DOC" для DOC-файлов. Другой вариант: если здесь же создать пустой строковый параметр NullFile, будет создаваться пустой файл нулевого размера.

Полезно также проводить не только добавление, но и удаление элементов из меню "Создать".

Людоговский Александр

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.