Добавить пункт меню в контекстное меню windows только для определенного типа файла


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

HKEY_CLASSES_ROOT*

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

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

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

Заранее благодарю.

2 37

2 ответа:

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).

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

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

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://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx#reg_verbs