Подтвердить что ты не робот

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

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

HKEY_CLASSES_ROOT\*

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

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

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

Спасибо заранее.

4b9b3361

Ответ 1

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

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

Ответ 2

В реестре есть еще один ключ, который работает независимо от пользовательских программ по умолчанию: 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