C # Windows 'Open с> «Поведение контекстного меню [дубликат
-
05-10-2019 - |
Вопрос
Возможный дубликат:
Ассоциация FileType с приложением (C #)
Я пишу приложение C # Windows для визуализации и модификации файлов «.Build» (сценарии NANT). Я хотел бы, чтобы пользователь мог правильно щелкнуть файл .Build в Windows Explorer и выберите опцию «Открыть с>», чтобы файл был изменен в моем приложении.
Что должна поддерживать мою программу для работы с этим механизмом? Что может моя программа должна сделать для Windows, чтобы включить поддержку контекстной меню?
Мне было интересно, может ли кто-нибудь указывать мне в направлении хорошей статьи / учебника по этому вопросу.
Решение
Открыть с помощью команды просто передает путь файла в качестве первого аргумента к приложению, чтобы все, что вам нужно сделать, это
public static void Main(string[] args)
{
if(args[0] != null)
{
//args[0] contans a path to the file do whatever you need to do to display it
}
else
{
//Start normally
}
}
Для автоматического размещения программы в открытой списке вам нужно будет добавить несколько клавиш Reg в HKEY_CLASSES_ROOT\YOUR_EXT\
. Вот такой ответ говоря, как это сделать
Или вы могли бы просто добавить его вручную на открытый с помощью обычного способа.
Другие советы
Посмотрите на этот блог пост: Расширения оболочки - контекстное меню. Отказ Он имеет код для простого «обертки» на несколько COM крючков в контекстное меню Windows Shell. Поместите его в GAC и, когда вы щелкните правой кнопкой мыши, ваше меню будет включено в подменю контекстного меню правой кнопкой мыши.
Что касается строго использования «Открыть с ...», чтобы сделать ваше приложение, только для файлов, которые он может открыть, это немного проще. Они управляются Windows с использованием ключей реестра в двух местах в реестре:
- HKEY_CURRENT_USER Программное обеспечение Microsoft Windows Centreversion Explorer Fileexts .fileextens OpenwithList (установка для текущего пользователя)
- HKEY_CLASSES_ROOT .fileextension OpenwithList (Установить для всех пользователей)
Посмотрите на некоторые из существующих, использующих Regedit, затем используйте класс реестра для создания нового ключа для расширения, который вы хотите.