Outlook自动化搜索未在Outlook 2013中启动

Outlook自动化搜索未在Outlook 2013中启动,outlook,outlook-addin,office-automation,outlook-2013,Outlook,Outlook Addin,Office Automation,Outlook 2013,我在Outlook 2013中遇到了一个“怪癖”,当时我试图让Outlook打开一个新窗口进行搜索(在我的Outlook加载项中单击按钮时)。搜索没有启动;搜索词出现在框中,但仅显示收件箱内容(如果与收件箱项目相关,则突出显示我的搜索词)。如果我随后更改了搜索框中的任何内容(例如,添加然后删除报价),它将正确启动(即,将输出过滤到我的搜索) 我无法在Outlook 2010中重现此问题,也无法通过独立的EXE调用相同的代码。此外,如果我启动对现有资源管理器窗口的搜索,它也能正常工作 以下是我的代

我在Outlook 2013中遇到了一个“怪癖”,当时我试图让Outlook打开一个新窗口进行搜索(在我的Outlook加载项中单击按钮时)。搜索没有启动;搜索词出现在框中,但仅显示收件箱内容(如果与收件箱项目相关,则突出显示我的搜索词)。如果我随后更改了搜索框中的任何内容(例如,添加然后删除报价),它将正确启动(即,将输出过滤到我的搜索)

我无法在Outlook 2010中重现此问题,也无法通过独立的EXE调用相同的代码。此外,如果我启动对现有资源管理器窗口的搜索,它也能正常工作

以下是我的代码(简化):

调试时,我尝试了:

  • 更改新资源管理器窗口(olFolderDisplayNormal)的显示选项
  • 在搜索之前调用ClearSearch
  • 事先执行替代搜索
  • 甚至在通话之间睡觉:-o
我想听听关于解决办法的任何建议,或者我错过的任何东西


通过延迟objExplorer.Search()(通过创建新的资源管理器并将消息发布到窗口,然后执行objExplorer.Search)解决了此问题。丑陋,但有效:-(

OutlookApp  := GetActiveOleObject(OUTLOOK_APPLICATION_CLASS);
OLNameSpace := OutlookApp.GetNameSpace(MAPI_NAMESPACE);
OLNameSpace.Logon;
objFolder := OLNameSpace.GetDefaultFolder(olFolderInbox);
objExplorer := OutlookApp.Explorers.Add(objFolder, olFolderDisplayNoNavigation);
objExplorer.Search(sSearchText, olSearchScopeAllFolders);
objExplorer.Activate;
...