2010-12-12 2 views
1

У меня есть приложение WPF для C#. Он предназначен для работы с любыми файлами. Прямо сейчас он принимает «ввод» с помощью аргументов командной строки, а также перетаскивает его в элемент управления в своем главном окне. Тем не менее, в идеале я хочу, чтобы люди исправляли любые файлы/несколько файлов и имели возможность просто щелкнуть «Awesomify this». (Это не настоящее имя.: P)Рекомендуемый способ смешивания .NET и контекстных меню файлов

У меня есть опыт работы с контекстными меню лет назад, поэтому в целом он не слишком точен. Таким образом, я ищу советы по наилучшему способу реализации этой функции. Все приведенные ниже примеры основаны на том, что я вижу с помощью W7.

Как правило, я понимаю, что есть два способа: чистый реестр и реестр + COM-объект.

У первого есть определенная элегантность, поскольку я не хочу ничего особенного; однако, из того, что я могу сказать по документации, эти пункты меню всегда растут в том же месте, что и первичные файловые действия (Open, Предварительный просмотр, Печать). Тем не менее, я хочу, чтобы мой предмет появился ниже на столбце тотема. Если я посмотрю на свой персональный контекстный контекст для случайного файла, я бы хотел, чтобы он находился на «месте» UltraEdit и Malwarebytes Anti-Malware придерживаться себя. Приклеивание моей записи под HKCR\*\shell\AwesomeTest получает мне мой товар, но независимо от того, что я выбираю для Position, я получаю две разные крайности, которые мне не нравятся: Top ставит его выше значения по умолчанию, Bottom ставит его прямо над Свойства. Я хочу, чтобы он между ними Поделиться с и Восстановить предыдущие версии, где большинство инструментов общего назначения, похоже, найдут дом.

Некоторые другие виды реорганизации, похоже, указывают на приложения, которые я хочу имитировать, используя маршрут объекта COM. И это привело бы меня (верю) обратно в собственный код. Который тогда принесет с собой все ады 32-битной и 64-битной разработки, которых я пытаюсь избежать.

Есть ли что-нибудь, что мне не хватает? Точно так же, кроме MSDN page regarding context menu handlers, который я просмотрел и обнаружил, что он бесполезен (поскольку, похоже, он очень скуден без погружений в более точные детали относительно размещения и т. Д.), Есть ли хорошие источники в этой проблеме?

Еще одна вещь, которую я еще не смог выяснить, - это то, как я могу правильно добавить поддержку IDropTarget в мое приложение .NET WPF, поэтому информация об этом также будет приветствоваться.

Если у кого-то есть мгновенный ответ, хорошо, что было бы хорошо, но я в основном стараюсь найти правильный путь, чтобы не тратить несколько дней на пути, которые являются тупиками. Кажется, что их много. :(

ответ

1

IContextMenu :: QueryContextMenu(). Расширение оболочки находится в области C++, очень неприятно в C#, .NET 4.0 требуется. Пример проект, который использует его is here.

+0

Спасибо за ответ, но это в значительной степени неправильная сторона истории. Я ищу, чтобы поместить свое приложение WPF в контекстное меню файла в определенном месте, а не иметь мои файлы по показанным/доступным/etc из моего приложения WPF. Пока что, похоже, лучшей альтернативой для этого является наличие 32-битного и 64-разрядного обработчика обработчика контекстного меню, брошенного в микс, чтобы показать элемент в нужном месте. – Stigma

+1

(Умственная нота: прекратите доставку плохих новостей). –

Смежные вопросы