Использовать стороннее контекстное меню (для проводника Windows) в приложении C #?

В отличие от других, которые хотят добавлять элементы в проводник Windows, я хочу отображать контекстное меню в моем приложении. Теперь вы можете подумать, что вам нужен класс ContextMenu. Позвольте мне показать вам, чем я хочу заниматься. Прошу прощения за маленькие изображения ...

Вот что у меня сейчас есть:

Мое текущее контекстное меню

Вот каким я бы хотел, чтобы это было:

Как бы я хотел, чтобы это выглядело

Давайте избавимся от предположений. Я уже обнаружил, что у пользователя установлен TortoiseSVN, и элемент, который он выбирает, находится под контролем источника.

Мои исследования на данный момент:

Получение контекстных меню - это очень полезно. Это библиотека C # для проводника Windows (которая может вызывать контекстное меню для конкретной папки / файла). Однако даже при тестировании примера он не получает параметры TortoiseSVN.

Другой поиск контекстного меню - почти идентичен предыдущей ссылке (код C # снова). Получает контекстное меню Проводника Windows без параметров TortoiseSVN.

Процесс добавления контекстного меню - Я только что начал читать эти подробные сообщения. Ответ может быть в этом тексте, но мне нужно время, чтобы разобраться в нем. Если мне повезет, я отправлю ответ.

Пользователь, похоже, может это сделать - похоже, быть группой электронной почты, которая занимается разработкой SVN. Зачем размещать это здесь? Возможно, чтобы доказать, что это можно сделать. Процитирую: «Я играю с контекстным меню оболочки TSVN. Я использую метод IContextMenu.QueryContextMenu (код C ++) для доступа к контекстному меню оболочки TSVN, а затем просматриваю возвращенное меню».

В общем, кажется, что это должно быть довольно просто сделать, и мне просто не хватает одного шага. Любые предложения приветствуются. Спасибо!

Изменения: попытка лучше использовать теги и более сфокусированный заголовок.


person techvice    schedule 11.04.2013    source источник
comment
Я пытался найти разные причины, по которым контекстное меню TortoiseSVN не отображается при использовании двух проектов C # с открытым исходным кодом, которые действуют как проводник Windows. Недавно я понял, что, хотя TortoiseSVN не отображается, другие сторонние инструменты появляются (например, Beyond Compare). Первоначально я полагал, что, возможно, существуют различия в ключах реестра, которые сыграли роль в этом. Я не добился успеха в этом наблюдении (TSVN находился во всех тех же местах реестра, что и BC). Я начинаю задаваться вопросом, действительно ли это проблема TortoiseSVN. Буду обновлять по мере поступления новых.   -  person techvice    schedule 16.04.2013
comment
Пожалуйста, объясните, почему класс .net ContextMenu не работает.   -  person PeterM    schedule 27.08.2013
comment
Если вы специально хотите использовать TortoiseSVN, вы можете вызвать его напрямую: tortoisesvn.net/ docs / release / TortoiseSVN_en /   -  person oefe    schedule 19.10.2013
comment
Возможно, это проблема 32-битной или 64-битной?   -  person oefe    schedule 19.10.2013
comment
@PeterM Вы неправильно поняли вопрос. Да, по сути используется ContextMenu, но я хотел включить определенные элементы из контекстного меню Windows Explorer без необходимости воспроизводить их самому.   -  person techvice    schedule 25.10.2013
comment
@oefe Хороший вопрос. К сожалению, я не могу углубиться в это (я больше не участвую в проекте). Но это я не рассматривал, и я знаю, что у меня был установлен x64, тогда как другие сторонние инструменты были x86. Бьюсь об заклад, вы что-то там заметили ...   -  person techvice    schedule 25.10.2013


Ответы (2)


Надеюсь, следующее поможет вам начать

person Patrick D'Souza    schedule 16.04.2013
comment
Не полезно. Все, что вы сделали, это показали ссылки, которые легко найти на stackoverflow.com. Кроме того, ссылки, которые вы указали, по сути сводятся к уже предоставленным мною. - person techvice; 17.04.2013

Вместо того, чтобы пытаться использовать Windows Explorer, в конечном итоге я сам повторно реализовал ContextMenu. Добавление прямых вызовов TortoiseSVN (как упоминалось ранее). Не самое элегантное решение, которое я хотел, но оно, конечно, сработало!

Замечу, что пользователь oefe указал, что основная проблема могла быть связана с x86 и x64 (TortoiseSVN был установлен как x64 на моей машине разработки). Другие пользователи могут захотеть изучить это, если попытаются выполнить аналогичную задачу.

person techvice    schedule 24.10.2013