Shell Integrate в Windows для определенного типа файла с C # - PullRequest
4 голосов
/ 27 марта 2011

Поэтому я искал руководство по интеграции оболочки (добавьте его в меню, вызываемое правой кнопкой мыши) с C #, но я не смог найти способ сделать это только для определенного типа файлов.Я знаю, что это возможно, потому что это делает WinRar.Так как я могу это сделать?

Ответы [ 2 ]

7 голосов
/ 27 марта 2011

Обычно это можно реализовать двумя способами.

  1. Ключи реестра - Вы можете записать ключи и значения в HKEY_CLASSES_ROOT. Если вы посмотрите на этот улей, вы увидите расширения на вашем компьютере. Посмотрите на эту статью для деталей о ключах и значениях. Здесь возможно что-то простое, например, возможность открывать .myfile типов в вашем приложении. Вот пример сопоставления файлов

  2. Расширения оболочки (написано в COM): Здесь вы можете делать более сложные вещи, такие как Обработчики. Они будут вызываться из Windows, чтобы вы могли выполнять такие вещи, как рисование в меню или добавлять настраиваемые действия. когда файл щелкают правой кнопкой мыши. Здесь есть нечто большее, чем файлы, вы даже можете добавить листы свойств и пользовательские подсказки.

Вы найдете разговор о том, что вы не используете .NET для написания обработчика оболочки **. Это относится только к более старым версиям .NET. С .NET4 все нормально.

Эта статья должна помочь вам с обработчиком контекстного меню в .NET4

** Почему было Не рекомендуется:

Когда вы пишете обработчик оболочки, он вызывается хост-процессом (обычно проводником Windows), а также такими вещами, как диалоги FileOpenDialogs и FolderBrowser. Таким образом, проблема может возникнуть, если вы напишите расширение оболочки в .NET 2.0 и приложение .NET 1.1, называемое диалог открытия файла, а затем будет вызван ваш обработчик оболочки .NET 2.0 и ваше приложение .NET 1.1, которое имеет более старую версию CLR. и будет конфликт версий.

Итак, я рад, что наконец-то узнал, что это как-то исправлено в .NET 4 =)

1 голос
/ 27 марта 2011

Меню Windows Explorer, вызываемое правой кнопкой мыши, контролируется реестром.В частности, улей HKEY_CLASSES_ROOT.

Хороший способ получить представление о том, как все работает, - проверить HKCR\.txt, который показывает, что произойдет с текстовыми файлами в меню правой кнопки мыши.Посмотрите на ключ (по умолчанию), который указывает на «txtfile».HKCR\txtfile будет иметь подключ HKCR\txtfile\shell\open\comman d.Клавиша (по умолчанию) для этого показывает команду на открытие notepad.exe с параметром «% 1», который указывает на открываемый файл.Замените открытый ключ другим именем (см. Раздел print и printto в ключе txtfile), чтобы добавить другую пользовательскую команду в контекстное меню.

Как только вы поймете, что нужно добавить винтегрируя ваше приложение, вы можете проверить пространство имен Microsoft.Win32 для классов, которые помогут манипулировать реестром с помощью кода c #.

...