Добавить пункт меню в контекстное меню Windows только для определенного типа файла - PullRequest
40 голосов
/ 23 января 2010

Я разработал приложение, которое загружает изображение с помощью контекстного меню окна (щелчок правой кнопкой мыши по файлу) и на данный момент работает, но клавиша reg находится на

HKEY_CLASSES_ROOT\*

и онаработает со всеми файлами.

Я хочу, чтобы пункт меню в контекстном меню отображался только с файлами .jpg.

Кем я могу это сделать?Какие ключи реестра я должен использовать?

Заранее спасибо.

Ответы [ 2 ]

79 голосов
/ 23 января 2010

1) Определите тип файла (ProgID) для файлов .jpg

Это можно сделать, проверив значение по умолчанию HKEY_CLASSES_ROOT\.jpg. Это может быть что угодно в зависимости от того, что вы установили, но для целей этого примера мы назовем его jpegfile, обычное значение по умолчанию.

2) Установите свойства пункта контекстного меню (глагол) для этого типа файла

Вы можете установить пункты контекстного меню для пользователя в HKEY_CURRENT_USER\Software\Classes\jpegfile\shell. Этот ключ имеет список глаголов для типа файла. В HKEY_LOCAL_MACHINE\Software\Classes\jpegfile\shell есть аналогичный ключ, и это системные значения по умолчанию для типа файла. Вы также можете поместить ключ глагола туда, но если такой же ключ существует в HKCU, он будет переопределен, поэтому имейте в виду.

3) Установить значение команды

Минимальное значение ключа, которое необходимо установить, чтобы оно заработало, является значением по умолчанию для подраздела command. Вам нужно установить это с путем к вашему приложению, например, так: HKEY_CURRENT_USER\Software\Classes\jpegfile\shell\open_with_myapp\command будет установлен на "c:\path\to\myapp.exe" "%1". Теперь контекстное меню для файлов .jpg будет иметь элемент «open_with_myapp», который запустит ваше приложение при нажатии и передаст имя выбранного файла в качестве параметра. Конечно, то, как ваше приложение обрабатывает параметры, зависит от вас, поэтому вам нужно установить строку параметров в то, что ваше приложение может обработать.

4) Установить другие свойства глагола

Я полагаю, вы, вероятно, захотите, чтобы пункт контекстного меню читал что-то более дружелюбное, чем название клавиши. В контекстном меню можно отобразить любую метку, которую вы хотите для своего элемента, установив значение по умолчанию для этой клавиши (open_with_myapp).

Это ваш основной обзор. Обязательно ознакомьтесь с моим ответом на этот вопрос о сопоставлении файла, на который есть аналогичный ответ:

15 голосов
/ 11 декабря 2017

В реестре есть еще один ключ, который работает независимо от пользовательских программ по умолчанию: HKEY_CLASSES_ROOT\SystemFileAssociations. Поскольку никто не упомянул об этом в этом вопросе ... Не нужно проверять ProgID перед добавлением пункта контекстного меню. Пример:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\SystemFileAssociations\.mkv\shell\subtitle]
@="Search subtitles..."

[HKEY_CLASSES_ROOT\SystemFileAssociations\.mkv\shell\subtitle\command]
@="\"D:\\Tools\\subsearch.exe\" \"%1\""

Ссылка: https://docs.microsoft.com/en-us/windows/desktop/shell/app-registration#registering-verbs-and-other-file-association-information

...