1

次の Web ページでは、プログラムによる Windows Search のクエリについて説明しています。

http://msdn.microsoft.com/en-us/library/aa965362.aspx

Delphi/Pascal を使用した例はありますか?

私が考えている例はかなり単純です。

  1. 特定のファイル タイプを検索します。
  2. ファイル内の特定のテキストを検索します。
  3. 上記の検索を特定のパスに制限します。
4

1 に答える 1

2

これは私が少し前に行ったものです - それは時代遅れかもしれないことに注意してください:

定数
  GENERAL_COLUMNS = '"System.Itemname", "System.Size", "System.DateCreated", "System.ItemDate",' +
                    '"System.ItemFolderPathDisplay", "System.Search.AutoSummary", "System.ItemType"';

  IMAGE_COLUMNS = '"System.Image.Horizo​​ntalSize", "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;
  catalogManager : ISearchCatalogManager;
  queryHelper : ISearchQueryHelper;
  wQuery : 文字列;
  temp : PWideChar;
  sTemp : 文字列;
始める
  マネージャー:= CoCSearchManager.Create;
  if Succeeded(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 := temp;

      queryHelper.Get_ConnectionString(temp);
      温度:= 温度;
      データセット := CreateComObject(CLASS_Recordset) を _Recordset として;
      データセット.CursorLocation:= adUseClient;
      dataset.Open(wQuery, stemp, adOpenForwardOnly, adLockReadOnly, adCmdText);
      データセット.Set_ActiveConnection(nil);
      bDatabaseFailed := false;
    他に終了
      bDatabaseFailed := true;
  他に終了
    bDatabaseFailed := true;
終わり;

それはすべて自明だと思います.fQueryは実行したいクエリです.

よろしくキース

于 2010-06-30T22:21:27.517 に答える