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 с помощью ключей реестра в двух местах реестра:

  1. HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \.FileExtension \ OpenWithList (установить для текущего пользователя)
  2. HKEY_CLASSES_ROOT \.FileExtension \ OpenWithList (установить для всех пользователей)

Взгляните на некоторые из существующих, используя regedit, затем используйте класс Registry, чтобы создать новый ключ для нужного вам расширения.

Другие вопросы по тегам