以下网页描述了以编程方式查询 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 是您要执行的查询。
问候基思