C# 找出用户右键单击的联系人

C# 找出用户右键单击的联系人,c#,vsto,contextmenu,outlook-addin,outlook-2013,C#,Vsto,Contextmenu,Outlook Addin,Outlook 2013,提前感谢您的帮助。我一直在寻找一个自己的解决办法有一段时间了 上下文:当用户右键单击联系人时,我添加了一个新的上下文菜单。其id为ContextMenuContactCardRecipient 问题:当用户在这个上下文菜单中并单击我的新按钮时,我需要知道用户右键单击哪个联系人才能进入上下文菜单 我找不到检索联系人项目详细信息的方法。。。有人知道我该怎么做吗 这里提供的答案不适用于我: 谢谢大家! 可能太迟了,但对其他人可能有帮助 XML <?xml version="1.0" e

提前感谢您的帮助。我一直在寻找一个自己的解决办法有一段时间了

上下文:当用户右键单击联系人时,我添加了一个新的上下文菜单。其id为
ContextMenuContactCardRecipient

问题:当用户在这个上下文菜单中并单击我的新按钮时,我需要知道用户右键单击哪个联系人才能进入上下文菜单

我找不到检索联系人项目详细信息的方法。。。有人知道我该怎么做吗

这里提供的答案不适用于我:


谢谢大家!

可能太迟了,但对其他人可能有帮助

XML

    <?xml version="1.0" encoding="UTF-8"?>
    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
      <contextMenus>
        <contextMenu idMso="ContextMenuContactCardRecipient">
          <button id="myMenuBtn"
              label="get mail email"
              onAction="lookForMe"
              visible="true"/>
        </contextMenu>
      </contextMenus>
    </customUI>

Web加载项不允许添加上下文菜单\它不是Web加载项。是的,您可以通过回拨方法获取联系人电子邮件地址。如果对你来说很难让我知道。如果将给出代码,如果您需要付费版本培训,请让我知道:)我已经在我的新上下文菜单项上有一个回调方法来执行操作。但对于此操作,我需要右键单击的联系人电子邮件地址。如果你能提供一些关于如何做到这一点的线索,那将是非常棒的!
        public void lookForMe(IRibbonControl control)
    {
        Office.IMsoContactCard card = control.Context as Office.IMsoContactCard;
        string email = GetSmtpAddress(card);
        if (email != null)
        {
            System.Diagnostics.Process.Start("https://org.ad.com/" + email);
        }
    }

    private string GetSmtpAddress(Office.IMsoContactCard card)
    {
        if (card.AddressType == Office.MsoContactCardAddressType.msoContactCardAddressTypeOutlook)
        {
            Microsoft.Office.Interop.Outlook.Application host = Globals.ThisAddIn.Application;
            Microsoft.Office.Interop.Outlook.AddressEntry ae = host.Session.GetAddressEntryFromID(card.Address);

            if ((ae.AddressEntryUserType == Microsoft.Office.Interop.Outlook.OlAddressEntryUserType.olExchangeUserAddressEntry 
                || ae.AddressEntryUserType == Microsoft.Office.Interop.Outlook.OlAddressEntryUserType.olExchangeRemoteUserAddressEntry))
            {
                Microsoft.Office.Interop.Outlook.ExchangeUser ex = ae.GetExchangeUser();
                return ex.PrimarySmtpAddress;
            }
            else
                throw new System.Exception("unvalid address entry not found.");
        }
        else
            return card.Address;
    }