C# 嵌入式Outlook视图控件

C# 嵌入式Outlook视图控件,c#,.net,visual-studio-2008,outlook,add-in,C#,.net,Visual Studio 2008,Outlook,Add In,我正在尝试在Windows XP SP3和Internet Explorer 7上使用Visual Studio 2008制作Outlook 2003加载项 我的加载项正在使用自定义文件夹主页,该主页显示我的自定义表单,它包装Outlook视图控件 每次尝试设置OVC的文件夹属性时,我都会得到COM异常,但HRESULT:0xXXXXXXXX描述中的“Exception from from HRESULT:0xXXXXXXXX”描述除外。错误代码是一个随机数,每次都是不同的。这不是第一次访问控件

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

我的加载项正在使用自定义文件夹主页,该主页显示我的自定义表单,它包装Outlook视图控件

每次尝试设置OVC的文件夹属性时,我都会得到COM异常,但HRESULT:0xXXXXXXXX描述中的“Exception from from HRESULT:0xXXXXXXXX”描述除外。错误代码是一个随机数,每次都是不同的。这不是第一次访问控件的属性,在此之前,已经设置了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,没有任何更新,一切正常。

Dobri Dan,nency:)

我不知道我是否真的能提供“银弹”解决方案提供了此处的信息……但这里有一些想法/注意事项可供尝试:

过去曾与Outlook合作过几个项目,我可以告诉您,有时在授予外部用户/流程访问权限方面,它是一只有趣的鸟。有时需要用户手动确认访问或登录…因此请确保

app.Session.Logon() 

我注意到的另一件事是使用
app.ActiveExplorer()
确保此函数返回的正是您认为的结果;它需要用户桌面上最上面的窗口…通常是,但并不总是您试图使用的窗口,所以只需仔细检查。

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

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

这是代码:

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);
 }

解决方案是不再使用“文档”作为名称,而是使用新的名称。问题与特定名称无关。

Dobar dan:)会话已登录,再次尝试登录不会产生任何结果。似乎活动的资源管理器总是正确的,除了返回的引用有时为null(?)。也许问题在于某些安全设置突然改变了?为什么要去掉COM错误代码?我去掉COM错误代码是因为每次都不一样。我最近意识到,只有前4个密码是不同的,但其余的总是相同的(0009)。