Outlook 2016 插件附件选择问题



我已经为选定的附件创建了一个Outlook插件以获取附件的详细信息。 及其在Outlook 2010中工作正常。但是当我为 Outlook 2016 构建它时,它变为空。

下面是此插件中的代码.cs:-

 private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            System.Reflection.Assembly assemblyInfo = System.Reflection.Assembly.GetExecutingAssembly();
            Uri uriCodeBase = new Uri(assemblyInfo.CodeBase);
            string Location = Path.GetDirectoryName(uriCodeBase.LocalPath.ToString());
            var path = Location.Split(new string[] { "bin" }, StringSplitOptions.RemoveEmptyEntries);
            var rootDir = path[0].ToString();
            var forPermissionsRootDirectory = Path.GetDirectoryName(rootDir);
            SetPermissions(forPermissionsRootDirectory);
            app = this.Application;
            app.AttachmentContextMenuDisplay += new Outlook.ApplicationEvents_11_AttachmentContextMenuDisplayEventHandler(app_AttachmentContextMenuDisplay);//attach Attachment context Menu Event//
        }
 void app_AttachmentContextMenuDisplay(Office.CommandBar CommandBar, Outlook.AttachmentSelection selection)
        {
            selectedAttachment = selection;
            RibbonUI.InvalidateControlMso("ContextMenuAttachments");//will get XML file data//
        }

这是附件上下文菜单中的代码.cs:-

public void OnOpenMyMotionCalendarButtonClick(Office.IRibbonControl control)
        {
            Outlook.AttachmentSelection selection = ThisAddIn.selectedAttachment;
             if ((selection.Count > 0))
                {
                   //My further working
                }
         }

在选择 中,Outlook 2016 始终为空。请建议该怎么做?

亲切问候爱丽儿

我相信Outlook开发人员添加了一个额外的逻辑来释放作为参数对象(附件)传递的内容。因此,您需要在事件处理程序中收集所有必需的信息,因为一旦方法结束,就可以销毁对象。没有人能保证对象在触发事件处理程序后处于活动状态。是否在 AttachmentContextMenuDisplay 事件处理程序中获取有效对象?

当不再需要所有 Outlook 加载项时,都应系统地释放其对 Outlook 对象的引用。使用 System.Runtime.InteropServices.Marshal.ReleaseComObject 在完成使用 Outlook 对象后释放该对象。然后在 Visual Basic 中将变量设置为 Nothing(在 C# 中为 null)以释放对该对象的引用。在系统地释放对象一文中阅读有关此内容的更多信息。

相关内容

  • 没有找到相关文章

最新更新