ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – 嵌入式Outlook视图控件

2019-07-01 08:53:14  阅读:365  来源: 互联网

标签:c net visual-studio-2008 outlook add-in


我试图在Windows XP SP3和Internet Explorer 7上使用Visual Studio 2008制作Outlook 2003加载项.

我的加载项是使用自定义文件夹主页,它显示我的自定义窗体,它包装Outlook视图控件.

每当我尝试设置OVC的Folder属性时,我都会得到’Exception from HRESULT:0xXXXXXXXX’的COM Exception.错误代码是一个随机数,每次都不同.它不是第一次访问控件的属性,在此之前,已经设置了View和ViewXML属性.控件标记为安全脚本.

我正在使用活动资源管理器的CurrentFolder.FolderPath属性的值,这似乎是正确的:

Outlook.Explorer currentExplorer = app.ActiveExplorer();
        if (currentExplorer != null)
        {
            ovcWrapper.Folder = currentExplorer.CurrentFolder.FolderPath;
        }

这是堆栈跟踪的顶部:

System.Runtime.InteropServices.COMException (0xXXXXXXXX): Exception from HRESULT: 0xXXXXXXXX
at Microsoft.Office.Interop.OutlookViewCtl.ViewCtlClass.set_Folder(String pVal)
at AxMicrosoft.Office.Interop.OutlookViewCtl.AxViewCtl.set_Folder(String value)..

仅当文件夹位于非默认PST文件中时才会发生这种情况.更改为默认PST文件中的文件夹不会产生任何异常.

我必须强调,在我去度假之前一切正常.:)似乎Windows XP安装了一些更新,这些更新在我不在时更改了Internet Explorer或Outlook 2003的默认安全性.

在另一台(虚拟机)上使用Office 2007和Internet Explorer 6,没有任何更新,一切正常.

解决方法:

过了一会儿,我终于找出了解决方案:将外部存储的名称更改为新的名称.

在启动插件期间,它会加载非默认的PST文件,并将其名称(不是pst文件的名称,而是根文件夹的名称)更改为“Documents”.

这是代码:

session.AddStore("C:\\test.pst"); // loads existing or creates a new one, if there is none.
storage = session.Folders.GetLast(); // grabs root folder of the new fileStorage.

if (storage.Name != storageName) // if fileStorage is brand new, it has default name.
{
      storage.Name = "Documents";
      session.RemoveStore(storage); // to apply new fileStorage name, it have to be removed and added again.
      session.AddStore(storagePath);
 }

解决方案不是再使用’Documents’作为名称,而是使用新的东西.问题与具体名称无关.

标签:c,net,visual-studio-2008,outlook,add-in
来源: https://codeday.me/bug/20190701/1345353.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有