以下网页描述了以编程方式查询 Windows 搜索:
http://msdn.microsoft.com/en-us/library/aa965362.aspx
有人有使用 Delphi/Pascal 的例子吗?
我想到的例子相当简单:
- 搜索某些文件类型。
- 在文件中搜索特定文本。
- 将上述这些搜索限制为特定路径。
以下网页描述了以编程方式查询 Windows 搜索:
http://msdn.microsoft.com/en-us/library/aa965362.aspx
有人有使用 Delphi/Pascal 的例子吗?
我想到的例子相当简单:
这是我不久前做的一个 - 请注意它可能已经过时了:
常量 GENERAL_COLUMNS = '"System.Itemname", "System.Size", "System.DateCreated", "System.ItemDate",' + '"System.ItemFolderPathDisplay", "System.Search.AutoSummary", "System.ItemType"'; IMAGE_COLUMNS = '"System.Image.HorizontalSize", "System.Image.VerticalSize", '+ '"System.Image.BitDepth", "System.Image.Compression", '+ '"System.Photo.CameraModel", "System.Photo.DateTaken", "System.Photo.Flash"'; MUSIC_COLUMNS = '"System.Music.Artist", "System.Music.Genre", "System.Music.TrackNumber", '+ '"System.Audio.Compression", "System.Audio.SampleRate", '+ '"System.DRM.IsProtected", "System.Music.AlbumTitle", "System.Rating", '+ '"System.Audio.EncodingBitrate"'; 程序 TWDSDataSource.RetrieveDataFromDB; 变量 经理:ISearchManager; 目录管理器:ISearchCatalogManager; 查询助手:ISearchQueryHelper; wQuery:字符串; 温度:PWideChar; sTemp:字符串; 开始 经理 := CoCSearchManager.Create; 如果成功(manager.GetCatalog('SystemIndex',catalogManager)) 然后 开始 如果成功(catalogManager.GetQueryHelper(queryHelper))那么 开始 如果 fMaxResults 为 0 则 queryHelper.Set_QueryMaxResults(fMaxResults); queryHelper.Set_QuerySelectColumns(GENERAL_COLUMNS + ',' + MUSIC_COLUMNS + ',' + IMAGE_COLUMNS); queryHelper.GenerateSQLFromUserQuery(PWideChar(fQuery),temp); wQuery := 温度; queryHelper.Get_ConnectionString(temp); sTemp := 温度; 数据集 := CreateComObject(CLASS_Recordset) as _Recordset; dataset.CursorLocation := adUseClient; dataset.Open(wQuery, stemp, adOpenForwardOnly, adLockReadOnly, adCmdText); dataset.Set_ActiveConnection(nil); bDatabaseFailed := false; 以其他方式结束 bDatabaseFailed := true; 以其他方式结束 bDatabaseFailed := true; 结尾;
我认为这一切都是不言自明的,fQuery 是您要执行的查询。
问候基思