原始 KB 数: 2265515
总结
本文介绍使用 Microsoft Outlook 2010 对象模型时可能发生的已知问题。
无法从提升权限的进程创建 Outlook.Application
对象
不能通过在 Windows Vista、Windows 7 或其他任何允许以提升权限运行的进程的操作系统中,使用以提升权限运行的进程来自动化 Outlook。 这是 COM 的基础限制。 Outlook 和用于自动化 Outlook 的自定义程序必须在相同的完整性级别上运行。
BeforeItemMove 和 BeforeFolderMove 事件不会发生
存在多个情形,在这些情况下事件 BeforeItemMove
和 BeforeFolderMove
不会发生。 已知方案包括从 To-Do 栏中删除约会、从日历和 To-Do 栏中删除会议、对非默认文件夹实现事件,以及使用“忽略对话”命令删除项目。 这些问题已在 2010 年 12 月 Outlook 2010 累积更新中修复。
GetProperty 方法在联机模式下失败
如果您在联机模式下使用 Microsoft Exchange 2010,并且使用 GetProperty
方法从未保存的项目检索属性,则该方法可能会失败。 这是因为 Exchange 2010 处理命名属性的方式发生了更改。 Outlook 2007 也受到影响。 当前解决方法包括:
- 在缓存模式下使用 Outlook。
- 在调用
GetProperty
该方法之前,请确保该项处于保存状态。
检查器窗口可能无法正确关闭
如果在 Microsoft Visual Studio Tools for Microsoft 办公室 (VSTO)中实现该GetVisibleCallback
函数,则用户可能无法正确关闭检查器窗口。 此问题已在 2011 年 2 月 Outlook 2010 累积更新中修复。
BeforeCheckNames 事件发生的时间与它在 Outlook 2007 中发生的时间不同。
在 Outlook 2010 中,BeforeCheckNames 事件发生在解析收件人之后,而不是之前。 这意味着取消事件不起作用。 此问题在 Outlook 2010 2011 年 2 月累积更新中更正。
视图对象模型可能与用户界面中的实际视图不对应
在某些情况下,如果以编程方式更改视图或检索视图设置,则对象模型中的设置可能与 Outlook 在用户界面中显示的实际视图设置不对应。 Outlook 2010 2011 年 2 月累积更新进行了改进,以解决此问题。
使用“插入项目”窗口时,附件无法正确管理
如果使用 Outlook 对象模型添加和删除附件,如果用户使用“插入项”命令插入项目附件,则可能具有额外的附件。 这是因为对话框中存在一个缺陷,使得所有附件都被视为可疑,即使它们实际上并不可疑。 因此,额外的附件与邮件一起保存。 此问题已在 2010 年 2 月 Outlook 2010 累积更新中修复。
无法使用 POP/IMAP 帐户插入项目附件
如果使用 Attachments.Add
此方法通过 POP/IMAP 帐户添加 Outlook 项目附件,则调用将失败。 此问题已在 Outlook 2010 的 2010 年 12 月累积更新中修复。
MailItem.Recipients.ResolveAll
函数删除“收件人”字段中的邮件接收者
如果用户在撰写模式下将未解析的收件人添加到邮件,然后 Recipients.ResolveAll
为该项目调用该方法,则会删除收件人。 没有计划更改此行为。
“已发送邮件”文件夹中的会议请求方法出现故障。
如果尝试从“已发送邮件”文件夹中的会议请求中检索约会,呼叫将失败。 此问题已在 2011 年 2 月 Outlook 2010 累积更新中修复。
如果检查器窗口处于打开状态,则约会数据可能不会更新
由于 Outlook 2010 处理和缓存约会的方式发生了内部更改,如果相应的约会在检查器窗口中打开,则对象模型可能无法提供有关约会异常的最新信息。 即使您取消引用并重新从存储中检索该项,此行为也会发生。 若要解决此问题,请确保约会窗口已关闭。 没有计划更改此行为。
NavigationFolder.Folder
在共享文件夹上生成错误
如果尝试从对象 NavigationFolder
获取 Folder 对象,可能会收到“操作失败”错误消息。 Outlook 2010 中新增的共享日历文件夹功能会出现此问题。 在 Outlook 初始化 NavigationFolder.Folder
对象之前检索会导致此问题发生。 默认情况下不会进行此初始化。 若要解决此问题,请先引用默认日历文件夹并调用 GetExplorer
该方法。 这间接导致 Outlook 初始化共享日历。 以下 Outlook VBA 代码示例演示了此问题和解决方法:
Sub GetCalendars()
' Work around
Set oCalFolder = Session.GetDefaultFolder(olFolderCalendar)
Set oCalExp = oCalFolder.GetExplorer
Dim oModules As Outlook.CalendarModule
Dim oMyCalendarGroup As Outlook.NavigationGroup
Dim oPeopleNavGroup As Outlook.NavigationGroup
Set oModules = ActiveExplorer.NavigationPane.Modules.GetNavigationModule(OlNavigationModuleType.olModuleCalendar)
Set oMyCalendarGroup = oModules.NavigationGroups.GetDefaultNavigationGroup(OlGroupType.olMyFoldersGroup)
Set oPeopleNavGroup = oModules.NavigationGroups.GetDefaultNavigationGroup(OlGroupType.olPeopleFoldersGroup)
GetNavFolders oMyCalendarGroup
GetNavFolders oPeopleNavGroup
End Sub
Private Sub GetNavFolders(ByVal obj As Outlook.NavigationGroup)
Set oNavFolders = obj.NavigationFolders
Dim oNavFolder As Outlook.NavigationFolder
For Each oNavFolder In oNavFolders
Debug.Print oNavFolder.DisplayName & "==>" & oNavFolder.Folder ' <-- this errors
Next
End Sub