EverythingLib.pas单元的调用示例,涵盖主要方法及常见使用场景:
program EverythingAPIDemo; {$APPTYPE CONSOLE} uses SysUtils, Windows, EverythingLib; procedure BasicSearchDemo; var i: Integer; FileName: LPCWSTR; FileSize: Int64; ftCreated, ftModified: TFileTime; begin // 初始化 Everything_Reset; // 设置搜索参数 Everything_SetSearchW('*.txt'); // 搜索所有txt文件 Everything_SetMatchCase(False); // 不区分大小写 Everything_SetMax(100); // 最多返回100条结果 Everything_SetSort(EVERYTHING_SORT_DATE_MODIFIED_DESCENDING); // 按修改时间降序 Everything_SetRequestFlags( EVERYTHING_REQUEST_FILE_NAME or EVERYTHING_REQUEST_PATH or EVERYTHING_REQUEST_SIZE or EVERYTHING_REQUEST_DATE_MODIFIED ); // 请求文件名、路径、大小和修改时间 // 执行查询(同步模式) if Everything_QueryW(True) then begin // 检查错误 if Everything_GetLastError <> EVERYTHING_OK then begin Writeln('搜索失败,错误代码:', Everything_GetLastError); Exit; end; // 获取结果总数 Writeln('找到 ', Everything_GetNumResults, ' 个结果:'); // 遍历结果 for i := 0 to Everything_GetNumResults - 1 do begin // 获取文件名 FileName := Everything_GetResultFileNameW(i); Write('文件名:', FileName); // 获取文件大小(需先请求EVERYTHING_REQUEST_SIZE) if Everything_GetResultSize(i, FileSize) then Write(', 大小:', FileSize, ' 字节'); // 获取修改时间(需先请求EVERYTHING_REQUEST_DATE_MODIFIED) if Everything_GetResultDateModified(i, ftModified) then Write(', 修改时间:', FileTimeToDateTime(ftModified)); Writeln; end; end; // 清理资源 Everything_CleanUp; end; procedure AdvancedUsageDemo; var hWnd: HWND; dwFlags: DWORD; begin // 设置异步查询 hWnd := AllocateHWnd(nil); // 需要实际处理消息的窗口句柄 Everything_SetReplyWindow(hWnd); Everything_SetReplyID(123); // 自定义消息标识 // 执行异步查询 Everything_QueryW(False); // 在窗口消息循环中处理查询结果... // 使用Everything_IsQueryReply判断消息是否属于查询回复 // 获取当前配置 dwFlags := Everything_GetRequestFlags; Writeln('当前请求标志:', IntToHex(dwFlags, 8)); // 获取Everything版本信息 Writeln(Format('Everything版本:%d.%d.%d.%d', [ Everything_GetMajorVersion, Everything_GetMinorVersion, Everything_GetRevision, Everything_GetBuildNumber ])); // 数据库操作示例 if not Everything_IsDBLoaded then Writeln('数据库未加载!'); // 重建索引(需要管理员权限) if Everything_IsAdmin then Everything_RebuildDB; end; // 辅助函数:将FILETIME转换为Delphi的TDateTime function FileTimeToDateTime(ft: TFileTime): TDateTime; var st: TSystemTime; begin FileTimeToSystemTime(ft, st); Result := SystemTimeToDateTime(st); end; begin try BasicSearchDemo; AdvancedUsageDemo; except on E: Exception do Writeln('发生异常:', E.Message); end; Readln; end.
示例说明:
-
基本搜索流程:
-
使用
Everything_Reset初始化 -
设置搜索参数(匹配模式、排序方式、返回字段)
-
执行同步查询
Everything_QueryW(True) -
遍历结果并获取文件属性
-
-
高级功能:
-
异步查询与窗口消息处理
-
获取系统配置信息(版本号、数据库状态)
-
数据库维护操作(重建索引)
-
-
关键方法覆盖:
-
设置类:
SetSearchW,SetMatchCase,SetSort -
查询类:
QueryW,IsQueryReply -
结果获取类:
GetNumResults,GetResultFileNameW,GetResultSize -
系统操作类:
RebuildDB,IsAdmin,GetMajorVersion
-
-
注意事项:
-
Unicode/ANSI函数需根据项目字符集选择
-
异步查询需要配合窗口消息循环
-
部分操作(如重建索引)需要管理员权限
-
请求字段需通过
SetRequestFlags明确指定
-
常见场景扩展:
-
分页查询:结合
SetMax和SetOffset -
高亮显示:使用
GetResultHighlightedXXX系列函数 -
运行统计:
GetRunCountFromFileNameW获取文件打开次数 -
文件监控:通过
UpdateAllFolderIndexes实时更新索引
浙公网安备 33010602011771号