科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件在VisualStudio中使用Windows桌面搜索

在VisualStudio中使用Windows桌面搜索

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

计算机硬盘容量越来越大,您保存的信息量也越来越多。您拥有成千上万的文件和电子邮件消息,因此很难准确查找所需的信息。令人欣慰的是,Windows? 桌面搜索可以帮助您进行查找。

作者:Sergey Mishkovskiy 来源:微软 2007年10月16日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
“选项”对话框页面

  工具窗口创建完成后,您可以为加载项提供一些配置选项,如图 3 所示。首先创建一个名为 WDSToolsOptions 的新类库,然后向其中添加一个名为 OptionsPage 的新用户控件。

  .

  图 3 工具“选项”对话框页面

  要添加“选项”对话框支持,您需要在新的用户控件上实现 IDTToolsOptionsPage 接口,其过程相当简单。此处只需要两个接口方法。OnAfterCreated 方法用于从注册表中读取以前保存的配置选项,并相应的更新 UI。OnOK 方法用于将 UI 选项保存到注册表。您可以通过一个静态的 Settings 类来保存所有配置选项,以避免频繁读取注册表。您可以在此文档的代码下载中查看这些实现。

  最后一步是设置加载项,以使用新的选项页面程序集。.addin XML 配置文件是进行此步骤的最好选择,新的 Visual Studio 2005 加载项部署功能简化了加载项的安装并消除了基于注册表注册的需要。以下是使用加载项配置“选项”页面所需的全部代码:

以下是引用片段:
<ToolsOptionsPage>
   <Category Name="Windows Desktop Search">
      <SubCategory Name="General">
         <Assembly>[Path-To-Addin]\WDSToolsOptions.dll</Assembly>
         <FullClassName>WDSToolsOptions.OptionsPage</FullClassName>
      </SubCategory>
   </Category>
</ToolsOptionsPage>

  如您所见,您只需告诉 Visual Studio 加载哪些程序集以及该程序集中的哪些类名称用于“选项”页面即可。请注意,建议将第一个子页面命名为 General,以遵循标准的 Microsoft 页面命名约定。

  .addin 文件中还包含加载项的所有“关于”对话框信息,包括图标。为加载项创建的默认图标是一个二进制编码字符串,这便很难进行修改,因此最好使用资源文件图标取而代之。

  是否还记得您第一次创建加载项时添加的资源文件?对于“关于”对话框,您可以创建一个名为 AboutIcon 的新的 32×32 图标,并将其添加到 WDSAddin.en 资源文件中。通过 .addin 配置文件可以从附属程序集加载图标,并用其资源 ID 来代替二进制编码字符串:

以下是引用片段:
<AboutIconData>@AboutIcon</AboutIconData>

  Windows Desktop Search SDK

  通过简单的 COM API 可查询被 Windows 桌面搜索编入索引的信息。ISearchDesktop 接口上只有两个公共方法:ExecuteSQLQuery 和 ExecuteQuery。ExecuteSQLQuery 用于对底层索引存储执行符合语法的 SQL 查询。另一方面,ExecuteQuery 更加用户友好,并且其查询字符串在语法上与通过 Windows 桌面搜索查询输入框提供的字符串相匹配。以下代码显示如何定义 ExecuteQuery 方法:

以下是引用片段:
  HRESULT ExecuteQuery(LPCWSTR lpcwstrQuery, LPCWSTR lpcwstrColumn,
  LPCWSTR lpcwstrSort, LPCWSTR lpcwstrRestriction, Recordset **ppiRs);

  图 4 中解释了 ExecuteQuery 参数。如您所见,前四个参数是不同的字符串输入值,它们可控制查询和结果集,而最后一个参数可控制输出结果集。

  幸运的是,您不必考虑将其转换为托管调用。Windows Desktop Search SDK 可提供下载,并包括两个托管程序集,其中一个位于 WDSQuery.dll。该 COM 互操作程序集可包装相关的 Windows Desktop Search COM 类和接口。最重要的是,它提供了一个名为 SearchDesktopClass 的类,该类可实现 ISearchDesktop 并用于执行 WDS 查询。对于 SearchDesktopClass 类,建议的使用模式是为每个查询创建一个新的实例,从而检索结果并允许垃圾收集器随后进行清理,而不是只创建该类的一个实例并将其保留用于所有搜索。以下代码显示如何在加载项中使用 SearchDesktopClass:

以下是引用片段:
  SearchDesktopClass wdsSearch = new SearchDesktopClass();
  _Recordset result = wdsSearch.ExecuteQuery(
  "Secondary", "Rank, FileName, DisplayFolder, Url, PerceivedType",
  "Rank DESC, DocTitle", "Contains(PerceivedType,'document')");

  该查询指定了 4 个元素。它针对字符串“Secondary”而执行。逗号分隔列以 Rank 开始,以 PerceivedType 结束。排序的列为 Rank 和 DocTitle。最后,将筛选器设置为检索“document”类型的所有项。该调用实际上转换为对所有其中含有单词“Secondary”的文档的一个请求。

  Windows 桌面搜索支持许多内置的列,以进行查询和排序。图 5 中显示了您可以使用的一些常用列。注意,结果将在示例代码中有意按照 Rank 降序排序。这可确保最可能的结果位于结构集的顶部。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章