Для добавления новой команды в контекстное меню, достаточно создать в разделе 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%togglethumbs.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. Отображение файлов в виде значков
...
ПРИМЕЧАНИЕ: ДОПОЛНИТЕЛЬНЫЕ ФАЙЛЫ
Для того чтобы автоматизировать выполнение вышеописанного примера, вы можете воспользоваться следующими файлами:
ToggleThumbsInstall reg – для добавления в реестр раздела, реализующего пункт меню Включить/выключить экскизы.
togglethumbs vbs – файл скрипта, который нужно скопировать в папку C:Windows для корректной работы примера.
Их вы можете найти в папке Ch4 в архиве togglethumb zip.
Добавление в контекстное меню Проводника и Рабочего стола команд, основанных на ActiveX
Существует еще один способ создания команд для контекстного меню, основанный на использовании объектов ActiveX.
Информация о командах контекстного меню, основанных на ActiveX-объектах, хранится в разделе реестра HKCRDirectoryBackgroundShellExContextMenuHandlers .
Для создания новой команды нужно создать подраздел с произвольным именем и в параметре по умолчанию указать CLSID ActiveX-объекта.
Если вы откроете редактор реестра, то в разделе HKCRDirectoryBackgroundShellExContextMenuHandlers увидите уже существующие подразделы.
Давайте попробуем создать несколько своих команд. Сначала мы создадим подраздел Test и в параметре по умолчанию будем прописывать нужные значения (рис. 4.30).
Рис. 4.30. Параметр, реализующий ActiveX-элемент контекстного меню
...
ПРИМЕЧАНИЕ
Не забудьте сделать копию модифицируемой ветки реестра или точку восстановления системы перед модификацией реестра!
Система отобразит в меню лишь одну из описанных команд даже в том случае, если вы создадите несколько разделов с разными CLSID, указанными по умолчанию. Поэтому выбирайте ту команду, которая наиболее актуальна для вас и оснащайте ею вашу систему.
Таблица 4.3. CLSID для добавления новых команд в контекстное меню (возможно добавление лишь одной из этих команд)
А вот несколько команд, которые не конфликтуют с другими:
Таблица 4.4. CLSID для добавления новых команд в контекстное меню
Добавляем Windows Media Center в меню автозапуска в Windows 7
В Windows 7 меню автозапуска не предоставляет возможности воспроизведения мультимедиа в Windows Media Center. Вы не найдете такого пункта и в настройках параметров автозапуска в панели управления.
...
БЛАГОДАРНОСТь
Автор книги выражает благодарность Павлу Кравченко (http://pavelmvp spaces live com/) за помощь в подготовке данного раздела.
По умолчанию Windows 7 не содержит записей в реестре, которые необходимы для возможности выбрать воспроизведение в Windows Media Center. Но вы можете самостоятельно добавить необходимые вам записи или экспортировать их с компьютера под управлением Windows Vista. Параметры, отвечающие за пункты диалогового окна автозапуска, содержатся в разделе: HKLMSOFTWAREMicrosoftWindowsCurrentVersionexplorerAutoplayHandlers .
...
ПРИМЕЧАНИЕ: ДОПОЛНИТЕЛЬНЫЕ ФАЙЛЫ
Для того чтобы добавить в меню автозапуска возможность воспроизведения мультимедиа в Windows Media Center, импортируйте в реестр файл w7 mediacenter to autoplay reg.