Создание собственных команд для контекстного меню Проводника и Рабочего стола

Создание собственных команд для контекстного меню Проводника и Рабочего стола

Мы знаем, как удалять или редактировать некоторые команды из контекстного меню Проводника и Рабочего стола. Настало время научиться создавать свои собственные команды. Информация о контекстном меню Проводника и Рабочего стола хранится в разделе реестра HKCRDirectoryBackgroundShell . Именно отсюда система узнает, какие команды нужно отобразить в контекстном меню и какие программы нужно запустить, когда пользователь щелкает по выбранной команде меню. Таким образом, вооружившись этими знаниями, мы сможем сами создавать нужные нам команды.

Для добавления новой команды в контекстное меню, достаточно создать в разделе HKCRDirectoryBackgroundShell новый подраздел. Предположим, мы хотим, чтобы в меню появилась команда, запускающая стандартный Блокнот. Создаем подраздел notepad и сразу можем проверить и убедиться, что в контекстном меню Рабочего стола появилась одноименная команда.

Естественно, такая команда не очень нас устраивает, и мы хотим задать собственный текст, например Блокнотик.

Для этого редактируем параметр по умолчанию созданного подраздела и записываем для него новое значение, которое мы хотим видеть, например, прописываем слово «Блокнотик» (рис. 4.24).

Рис. 4.24. Новый раздел реестра для добавления команды в контекстное меню

Проверяем и убеждаемся, что в контекстном меню появилась команда Блокнотик (рис. 4.25). Пункт меню мы добавили, но щелчок по нему пока ни к чему полезному не приводит. Для того чтобы новый пункт меню не только отображался, но и работал, нам понадобится настроить еще некоторые параметры.

Рис. 4.25. Новый пункт меню

Подраздел notepad может содержать в себе другие подразделы и различные параметры строкового типа. Сначала рассмотрим параметры. Мы уже знаем, что параметр по умолчанию определяет название команды. Также можно использовать следующие параметры:

? MUIVerb – значение данного параметра заменяет собой значение параметра по умолчанию, то есть мы можем в нем задать имя для команды в меню.

? Extended – наличие данного параметра без значения говорит системе о том, что команда должна отображаться только при нажатии клавиши Shift . Вы можете посмотреть на подраздел HKCRDirectoryBackgroundshellcmd , в котором содержится такой параметр. Поэтому, если держать нажатой клавишу Shift , в контекстном меню появится команда Открыть окно команд .

? LegacyDisable – присутствие данного параметра запрещает отображение в контекстном меню создаваемой команды. Правда, тогда не понятно, зачем вообще создавать команду, если ее не нужно выводить на экран.

? ProgrammaticAccessOnly – присутствие данного параметра так же запрещает отображение в контекстном меню создаваемой команды, разрешая только программный доступ к ней.

? NoWorkingDirectory – наличие данного параметра говорит о том, что при работе программы (если команда контекстного меню запускает программу) не нужно указывать рабочий каталог программы.

Теперь перейдем к подразделам. Прежде всего, нужно создать подраздел command . Параметр по умолчанию данного подраздела должен содержать в себе команду, которая будет выполняться при выборе соответствующего элемента контекстного меню. В нашем случае нужно прописать команду notepad.exe (рис.4.26).

Рис. 4.26. Настройки в реестре для новой команды

Как видите, несколько несложных операций в реестре – и мы получаем новую команду для контекстного меню Рабочего стола и Проводника. А зная алгоритм создания новой команды, вы можете изучить и отредактировать параметры других программ, которые вы прописали в операционной системе.

Включение/выключения эскизов

Рассмотрим практический пример создания собственной команды в меню Проводника.

Если вы предпочитаете просматривать файлы в режиме Значки, то заметили, что, например, значки картинок отображаются в виде эскизов. В настройках папки можно изменить данное поведение и отключить показ эскизов.

Включать или отключать эти настройки очень утомительно. Судите сами – сначала надо нажать клавишу Alt , чтобы появилась строка меню у Проводника, далее выбираем меню Сервис ? Параметры папок... . Теперь нужно переключиться на вкладку Вид и поставить или убрать флажок у команды Всегда отображать значки, а не эскизы . Упростим задачу при помощи реестра и небольшого VBS-сценария, который циклически меняет значения параметра IconsOnly в разделе HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced .

Создадим новый раздел ToggleThumb в разделе HKCU SoftwareClassesDirectoryBackgroundShell и присвоим параметру по умолчанию строковое значение Включить/ Выключить эскизы . Тем самым мы создали новую команду для контекстного меню папки в Проводнике. Обратите внимание, что теперь мы используем раздел HKCU , чтобы действие примера распространялось только на одного пользователя.

В только что созданном подразделе ToggleThumb cоздаем подраздел command и прописываем в параметре по умолчанию строку wscript.exe «%WinDir% ogglethumbs.vbs» (рис. 4.27).

Рис. 4.27. Настройка для выполнения сценария

Теперь создадим сценарий, который будет переключать режим показа эскизов.

Листинг 4.1. Сценарий для включения и выключения эскизов

Set WscripthShell = CreateObject(«WScript.Shell»)

strRegPath = «HKCUSoftwareMicrosoftWindowsCurrentVersion ExplorerAdvancedIconsOnly»

strParIconsOnly = WscripthShell.RegRead(strRegPath)

If strParIconsOnly = 0 Then

scripthShell.RegWrite strRegPath,1,"REG_DWORD"

Else

scripthShell.RegWrite strRegPath,0,"REG_DWORD"

End If

WscripthShell.SendKeys «{F5}»

Сохраните сценарий под именем togglethumbs.vbs и скопируйте его в папку Windows.

Теперь можно открыть Проводник и проверить работу новой команды. Для удобства я сначала выбрал режим Крупные значки , которые отображаются в виде эскизов (рис. 4.28).

Далее я выбрал в контекстном меню пункт Включить/Выключить эскизы и получил следующий результат – вместо эскизов я увидел значки программы Adobe Photoshop, ознакомительную версию которой я поставил несколько дней назад на своем компьютере (рис.4.29).

Рис. 4.28. Отображение файлов в виде эскизов

Рис. 4.29. Отображение файлов в виде значков

Данный текст является ознакомительным фрагментом.