Я пытаюсь создать дополнение Outlook, в котором я щелкаю правой кнопкой мыши по почте, и появляется специальное всплывающее меню, которое взаимодействует с приложением VB Windows Form, которое я также создал в Visual Studio.
Может ли кто-нибудь указать мне несколько методов, которые позволяют мне сделать такое взаимодействие возможным?
Спасибо
@Crowcoder, вопрос не в том, чтобы получить текущий выбранный элемент в Outlook.
@EugeneAstafiev, возможно, вы правы, но «щелчок правой кнопкой мыши по почте» подразумевает для меня желание получить доступ к этому конкретному сообщению.
Ваша надстройка VSTO может рассматриваться как обычное приложение на основе .net. Таким образом, вы можете использовать стандартные инструменты .net для связи между двумя отдельными приложениями — вашей надстройкой VSTO и приложением Windows Forms.
Если у вас есть существующее приложение WinForms, я предполагаю, что вы не используете .NET 5, поэтому вы можете использовать Фонд связи Windows (WCF). Если вы используете .NET 5 или выше для WinForms, вы не можете использовать WCF; gRPC является альтернативой и не работает для .Net до .Net 5. WCF был разработан как высокоуровневый интерфейс для большинства вариантов связи между приложениями.
Если вам не нужен клиент и сервер, то это будет то, что называется Одноранговая сеть.
После выбора технологии для связи между двумя приложениями вы можете получить текущий выбранный элемент с помощью обратных вызовов ленты. Обычно обратный вызов onAction
для кнопок имеет следующую подпись:
C#: void OnAction(IRibbonControl control)
VBA: Sub OnAction(control As IRibbonControl)
C++: HRESULT OnAction([in] IRibbonControl *pControl)
Visual Basic: Sub OnAction(control As IRibbonControl)
Вы можете использовать экземпляр IRibbonControl, переданный в качестве параметра, для получения значения свойства Контекст, которое представляет активное окно, содержащее пользовательский интерфейс ленты, запускающий процедуру обратного вызова. После этого вы можете получить объект Selection
и обработать выбранный элемент, на который нажали.
Нет необходимости в WCF или gRPC. Надстройка может размещать форму, которая имеет доступ к API Outlook.
Да, надстройка может иметь встроенную форму. Мы не знаем всех условий. Но подпись говорит о взаимодействии двоих.
Я не знаю, как щелкнуть правой кнопкой мыши, но надстройка может знать о выбранном в данный момент сообщении (или календаре и т. д.), поэтому при ее запуске с ленты вы можете получить доступ к этому элементу Outlook. Возможно, вам повезет больше, если вы изучите этот подход.