4

我正在尝试通过联合搜索功能从本地 .net 程序集在 Windows 7 资源管理器中显示搜索结果。(不是来自网络服务)

我找到了各种教程,但它们都是针对 Web 服务的。早些时候我认为这是不可能的,但后来我遇到了 StickyNotes 联合搜索连接器。.OSDX 文件的内容是:

<?xml version="1.0" encoding="UTF-8"?>
<searchConnectorDescription xmlns="http://schemas.microsoft.com/windows/2009/searchConnector">
  <description>Create short handwritten or text notes.</description>
  <isSearchOnlyItem>true</isSearchOnlyItem>
  <includeInStartMenuScope>true</includeInStartMenuScope>
  <templateInfo>
    <folderType>{982725EE-6F47-479E-B447-812BFA7D2E8F}</folderType>
  </templateInfo>
  <simpleLocation>
    <url>StickyNotes://{S-1-5-21-3431700657-2522803235-1547684158-1000}/notes</url>
    <serialized>MBAAAEAFCAAAAAAAADAAAAAAAYUgAAQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAYKAUAwHAykg1PPWtiyRvmVorPeOnkJkAQEATBAdAkGAjBwaAkHAOBwbAQHAlBwcAoDAvAwLAsHATBQLAEDAtAQNA0CAyAQMA0CAzAANAMDAxAwNAADAwAgNAUDA3AQLAIDA1AgMAIDA4AAMAMDAyAwMAUDAtAQMAUDA0AwNAYDA4AANAEDA1AAOA0CAxAAMAADAwAQfA8CAuBwbAQHAlBwcAAAAAAAAAAAAAAA</serialized>
  </simpleLocation>
</searchConnectorDescription>

这意味着可以将搜索查询转发到本地数据存储/dll/exe

我想使用我的 .net 应用程序以相同/相似的方式提供搜索结果。我从哪说起呢?

请参阅:Windows 7 联合搜索提供程序实施者指南

我的目标是使文档库数据库(sqlite)可通过 Windows 资源管理器搜索,并在资源管理器中列出来自数据库的文件及其元数据(文件存储在本地)。

4

2 回答 2

2

这个项目似乎在 C# 中完成了这个:http: //mossph.codeplex.com/

该项目使用 IContentEnumerator、IFilter 和 IUrlAccessor 实现 ISearchProtocol。一切都从 ContentEnumerator 类的实现传播。

于 2012-11-14T18:43:24.693 回答
1

MSDN 上的信息已更新。
http://msdn.microsoft.com/en-us/library/dd378288%28v=vs.85%29.aspx

它现在列出:

HRESULT GetResults(
  [in]   HWND hwnd,
  [in]   LPCWSTR pszQuery,
  [in]   DWORD dwStartIndex,
  [in]   DWORD dwCount,
  [in]   REFIID riid,
  [out]  void **ppv
);

参数

hwnd [输入]

类型:HWND
调用者的窗口句柄。

pszQuery [输入]

类型:LPCWSTR
用户输入的查询。此参数等效于 OpenSearch {searchTerms} 参数,可以为空。

dwStartIndex [in]

类型:DWORD
被请求的第一个结果的索引。等效于 OpenSearch {startIndex} 参数。请参阅下面的备注。

dwCount [in]

类型:DWORD
请求的结果数。等效于 OpenSearch {count} 参数。

riid [输入]

类型:REFIID
被请求接口的 IID。通常是 IID_IStream。

ppv [出]

类型:void** RIID 指定类型的接口指针,指向包含 Atom 或 RSS 格式结果的对象。

至少我们知道一个有效的 riid 是IID_IStream

相关信息在这里:http: //msdn.microsoft.com/en-us/library/windows/desktop/aa380034%28v=vs.85%29.aspx

于 2014-05-15T14:15:31.117 回答