C# Windows 'Открыть с помощью>' Поведение контекстного меню
Возможный дубликат:
Связь типа файла с приложением (C#)
Я пишу приложение для Windows на C# для визуализации и изменения файлов ".build" (nant-скрипты). Я хотел бы, чтобы пользователь мог щелкнуть правой кнопкой мыши файл.build в проводнике Windows и выбрать параметр "Открыть с помощью>", чтобы разрешить изменение файла в моем приложении.
Что должна поддерживать моя программа для работы с этим механизмом? Что моя программа должна сделать для Windows, чтобы включить поддержку контекстного меню?
Мне было интересно, если кто-нибудь может указать мне в направлении хорошей статьи / учебник по этому вопросу.
2 ответа
Команда Open With просто передает путь к файлу в качестве первого аргумента приложению, поэтому все, что вам нужно сделать, это
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\
, Вот SO ответ, говорящий, как это сделать
Или вы можете просто добавить его вручную в открытый список обычным способом.
Взгляните на этот пост в блоге: Shell Extensions - Context Menu. Он содержит код для простой "обёртки" для некоторых COM-хуков в контекстное меню оболочки Windows. Поместите его в GAC, и когда вы щелкнете правой кнопкой мыши, ваше меню будет включено в качестве подменю контекстного меню, вызываемого правой кнопкой мыши.
Строго говоря, используя "Открыть с помощью", чтобы приложение отображалось ТОЛЬКО для файлов, которые оно может открыть, это немного проще. Они управляются Windows с помощью ключей реестра в двух местах реестра:
- HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \.FileExtension \ OpenWithList (установить для текущего пользователя)
- HKEY_CLASSES_ROOT \.FileExtension \ OpenWithList (установить для всех пользователей)
Взгляните на некоторые из существующих, используя regedit, затем используйте класс Registry, чтобы создать новый ключ для нужного вам расширения.