使用“即时搜索”在所有文件夹和所有存储中搜索主题包含某短语的项

本示例使用"即时搜索"在所有文件夹和所有存储区中搜索主题中的某个短语,并在资源管理器窗口中显示相应项目。

示例

注意

下面的代码示例摘录自 Microsoft Office Outlook 2007 应用程序编程

“即时搜索”是一项 Microsoft Outlook 功能,便于用户通过发出根据内容返回结果的查询来执行搜索。 您的查询一经处理后,即会在各种对象中返回结果,包括 Table 对象、 Items 集合和 Search 对象。 您可以使用 Microsoft Windows 桌面搜索提供的高级查询语法 (AQS),来编写使用即时搜索的代码。 AQS 是 Outlook 支持的三种查询语言之一。 它的功能很强大,但仅限于 Explorer 对象的 Search(String, OlSearchScope) 方法。 无法使用 AQS 限制 TableItem 对象。 此外,AQS 查询返回的结果只能显示在 Outlook 用户界面中。 下表列出了 Outlook 支持的三种查询语言;不过,本主题介绍的是仅使用 AQS。

查询语言

说明

AQS

AQS 由 Windows 桌面搜索使用,是针对 Outlook 中的即时搜索功能的查询语言。

DASL

DAV 搜索和定位 (DASL) 查询语言基于 Outlook 中 DASL 的 Microsoft Exchange 实现。 DASL 可用于在 Table 对象中返回结果。

Jet

Jet 查询语言为 Outlook 提供简单的查询语言,它基于 Microsoft Jet Expression 服务。 Jet 用于为 Items 集合和 Table 对象的 Restrict 方法创建筛选器字符串。

在下面的代码示例中,DemoInstantSearch 获取所有存储中的全部邮件文件夹,这些存储已使用 Store 对象的 IsInstantSearchEnabled 属性启用索引。 然后,它使用 Explorer 对象的 Search 方法,筛选出主题中包含确切短语“Office 2007”的上月收到的所有项。 最后,搜索结果显示在独立资源管理器窗口中。

如果使用 Visual Studio 测试此代码示例,必须先添加对 Microsoft Outlook 15.0 对象库组件的引用,并在导入 Microsoft.Office.Interop.Outlook 命名空间时指定 Outlook 变量。 不得将 using 语句直接添加到此代码示例中的函数前面,这个语句必须后跟公共类声明。 下面的代码行演示了如何在 C# 中执行导入和分配。

using Outlook = Microsoft.Office.Interop.Outlook;
private void DemoInstantSearch()
{
    if (Application.Session.DefaultStore.IsInstantSearchEnabled)
    {
        Outlook.Explorer explorer = Application.Explorers.Add(
            Application.Session.GetDefaultFolder(
            Outlook.OlDefaultFolders.olFolderInbox)
            as Outlook.Folder,
            Outlook.OlFolderDisplayMode.olFolderDisplayNormal);
        string filter = "subject:" +
            "\"" + "Office 2007" + "\"" +
            " received:(last month)";
        explorer.Search(filter,
            Outlook.OlSearchScope.olSearchScopeAllFolders);
        explorer.Display();
    }
}

另请参阅