Windows Search 4-Query - Delphi Beispiel
-
01-10-2019 - |
Frage
Die folgende Webseite beschreibt das Abfragen der Windows-Suche programmatisch:
http://msdn.microsoft.com/en-us/library /aa965362.aspx
Hat jemand Beispiele mit Delphi / Pascal?
Beispiele I im Sinn haben, sind recht einfach:
- Suchen Sie nach bestimmten Dateitypen.
- Suchen nach einem bestimmten Text innerhalb von Dateien.
- als diese oben Suche auf einen bestimmten Pfad.
Lösung
Hier ist ein ich vor einer Weile tat - beachten Sie, dass es veraltet aus kann:
const 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"'; procedure TWDSDataSource.RetrieveDataFromDB; var manager : ISearchManager; catalogManager : ISearchCatalogManager; queryHelper : ISearchQueryHelper; wQuery : string; temp : PWideChar; sTemp : string; begin manager := CoCSearchManager.Create; if Succeeded(manager.GetCatalog('SystemIndex',catalogManager)) then begin if Succeeded(catalogManager.GetQueryHelper(queryHelper)) then begin if fMaxResults 0 then queryHelper.Set_QueryMaxResults(fMaxResults); queryHelper.Set_QuerySelectColumns(GENERAL_COLUMNS + ',' + MUSIC_COLUMNS + ',' + IMAGE_COLUMNS); queryHelper.GenerateSQLFromUserQuery(PWideChar(fQuery),temp); wQuery := temp; queryHelper.Get_ConnectionString(temp); sTemp := temp; dataset := CreateComObject(CLASS_Recordset) as _Recordset; dataset.CursorLocation := adUseClient; dataset.Open(wQuery, stemp, adOpenForwardOnly, adLockReadOnly, adCmdText); dataset.Set_ActiveConnection(nil); bDatabaseFailed := false; end else bDatabaseFailed := true; end else bDatabaseFailed := true; end;
Ich denke, es ist alles ziemlich selbsterklärend, fQuery ist die Abfrage, die Sie ausführen möchten.
Viele Grüße Keith
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow