Свой пункт в контекстном меню Windows

251
10 января 2018, 15:31

При установке новых программ, при нажатии правой кнопки мыши и выборе в меню создать можно выбрать создаваемый файл этой программой.

Например, после установки Office можно создать какой-нибудь Excel из контекстного меню Windows.

А некоторые программы вообще могут создать новый пункт, например, как на скриншоте появился пункт меню AMD.

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

Я подозреваю, что нужно прописаться куда-то в реестр и должен быть вызов метода Main с определенным аргументом по которому будет создан файл, но что-то не смог нагулить подробностей.

Вот это имею ввиду:

Answer 1

Нужную информацию проще всего найти в MSDN.

Для того, чтобы добавить обработчик New... для зарегистрированного типа вашего приложения, вы должны зарегистрировать расширение, и для него установить в инсталляторе подключ ShellNew. Если вы не делаете инсталлятор, то в ключе для вашего расширения (HKEY_CLASSES_ROOT\.расш) укажите подключ ShellNew. В нём создайте значение, которое указывает, как именно будет создаваться новый файл.

У вас есть 4 возможности.

  • Значение Command строкового типа (REG_SZ, string с точки зрения C#). Будет вызвана ваша команда, путь к которой указан вами в значении параметра.
  • Значение Data бинарного типа (REG_BINARY, byte[] с точки зрения C#). Данные будут скопированы в новый файл.
  • Значение FileName строкового типа. Поместите сюда имя файла, и он будет скопирован. Не забудьте добавить и сам файл. Если этот ключ указан, ключ Data игнорируется.
  • Значение NullFile (пустой). Создаётся пустой файл. Если этот ключ указан, ключи Data и FileName игнорируются.

При указании имени файла в FileName, вы можете либо указать полное имя (тогда оно используется), либо, кажется можно указать относительный путь. При этом поиск проводится сначала в %USERPROFILE%\Templates текущего пользователя, затем в %ALLUSERPROFILE%\Templates, а затем в %SYSTEMROOT%\ShellNew.

READ ALSO
Обновление программы из лаунчера

Обновление программы из лаунчера

У меня есть лаунчер для игры (скачивает саму игру и запускает её с параметрами)Я хочу что-бы при обновлении лаунчер докачивал обновление,...

163
Использование событии в приложении

Использование событии в приложении

Добрый день, прошу совета с грамотным использованием событии в приложенияхУ меня был проект клиент-сервер на сокетах

234
Передача данных из UserControl в другую форму

Передача данных из UserControl в другую форму

В UserControl есть Textbox,в нём есть текстЭтот текст нужно передать в другой TextBox в новой форме

187
Директива using не нужна - UnityEngine.Advertisements

Директива using не нужна - UnityEngine.Advertisements

Директива UnityEngineAdvertisements не подтягивается к проекту

462