Вот пример, покалывающий, как добавить пользовательское контекстное меню к типу файла с использованием малоизвестной новой игрушки в Windows 7 под названием clip.exe. Это программа командной строки, которая копирует текст в буфер обмена и, по стечению обстоятельств, хорошо работает с текстовыми файлами.
Откройте редактор реестра и перейдите к HKEY_CLASSES_ROOT\.txt. Посмотрите на значение (По умолчанию) в правой области, чтобы узнать имя раздела типа файла (обычно это txtfile).
Перейдите к разделу типа файла (например, HKEY_CLASSES_ROOT\txtfile) и откройте подраздел shell (HKEY_CLASSES_ROOT\txtfile\shell). Создайте внутри shell новый раздел, названный copycontents. Откройте новый раздел, щелкните на значении (По умолчанию), введите Копировать содержание в буфер обмена (Сору Contents to Clipboard) в качестве данных значения и нажмите ОК.
Затем создайте раздел, названный command, внутри раздела copycontents. Откройте новый раздел command и установите его значение По умолчанию (Default) cmd. exe / с clip < "%1". Затем нажмите ОК и закройте редактор реестра.
Чтобы проверить, как это работает, щелкните правой кнопкой на любом .txt-файле в Проводнике и выберите Копировать содержимое в буфер обмена. (Если новой записи там нет, возможно, вы поместили новые разделы в реестре в неправильном месте.) Можно проверить, что содержимое файла было скопировано в буфер обмена, вставив его в пустое окно Блокнота.
Можно использовать утилиту Clip, чтобы копировать в буфер обмена практически что угодно. Например, чтобы скопировать имя выбранного файла, введите данные значения (По умолчанию) в разделе command: cmd.exe /с echo%l | clip
Или, например, если вы добавили элемент контекстного меню в тип файла Папка (Folder), можно скопировать содержание любой папки с помощью такой команды: cmd.exe /с dir и%1" /Ь /о:п | clip
Откройте окно командной строки и введите clip /?, чтобы узнать команды этого инструмента.
Великолепно звучит, не правда ли? К сожалению, в Windows 7 совершенно отсутствует окно Типов файла (File Types) — инструмент из более ранних версий Windows, который позволяет редактировать контекстные меню Проводника. Вместо него предлагается чрезвычайно упрощенное окно Задать сопоставления (Set Associations), показанное на рис. 3.17. Здесь вы можете только выбрать приложения по умолчанию для различных типов файла и при этом стереть значения по умолчанию ваших приложений или любые пользовательские контекстные меню, которые вы создали (подробнее об этом позже).
Итак, если вы хотите настроить свои контекстные меню, остается две возможности: или взломать реестр, или использовать стороннюю программу. Учитывая, что эта глава — про реестр, немного развлечемся, копаясь в разделах и значениях.
В реестре есть раздел под названием Shell, друтри которого все и происходит. Каждый подраздел Shell соответствует одному действию в контекстном меню файла.
Текст, который появляется в контекстном меню, определяется в значении раздела действия (Поумолчанию); если значение пусто, Проводник использует имя раздела (например, Открыть (Open)). К сожалению, в Windows 7 есть две соревнующиеся системы, которые определяют действия по умолчанию для типов файлов; для получения подробной информации см. врезку «Зло переопределения UserChoice» на с." 169.
Рис 3.17. Окно Задать сопоставления (Set Associations window) доступное из Панели управления Программы по умолчанию ► Сопоставление типа файла или протокола с программой (Default Programs ► Associate a file type or protocol with a program) — не показывает ничего хорошего
Скажем, вы щелкаете правой кнопкой на документе Microsoft Excel (.xlsx-файл), и в верхней части меню, которое появляется, вы видите Открыть (Open), Новый (New), и Печать (Print). Если вы откроете реестр, вы увидите, что HKEY_CLASSES_ROOT\. xlsx указывает на HKEY_CLASSES_ROOT\Excel. Sheet. 12. Перейдите к HKEY_CLASSES_ROOT \ Excel.Sheet. 12\Shell. Внутри раздела Shell вы увидите три подраздела — вы так и думали — New. Open, и Print Добавьте новый подраздел в Shell, сопровождаемый коротко описанными подразделами, и вы получите новую запись в контекстном меню для всех файлов выбранного типа.
ЗЛО ПЕРЕОПРЕДЕЛЕНИЯ USERCHOICE
Если вы щелкаете правой кнопкой на файле, выбираете Открыть с помощью (Орел With) и затем выбираете приложение по умолчанию ~ или если вы используете окно Задать сопоставления (Set Associations), показанное на рис. 3.17, - Windows фактически не изменяет тип файла. Вместо этого Windows добавляет новый раздел для расширения файла в HKEY_CURRENT_USER\Software\Microsoft \Windows\CurrentVersion\ Explorer\FileExts и затем в этом новом разделе добавляет раздел UserChoice с полным путем программы, которую вы выбрали: