Everything 下载地址:点击访问
Everything-SDK 接口API和注意事项:点击访问
一、下载Everything-SDK 并解压在项目目录中并设置DLL 始终复制输出
二、新建一个 Everything.cs 文件内容如下:
public class Everything { /// <summary> /// 是否64位 /// </summary> /// <returns></returns> public static bool IsSys64bit() { if (IntPtr.Size == 8) { return true; } else { return false; } } internal class Everything32 { private const string LIB_NAME = "dll/Everything32.dll"; #region 引用定义 private const int EVERYTHING_OK = 0; private const int EVERYTHING_ERROR_MEMORY = 1; private const int EVERYTHING_ERROR_IPC = 2; private const int EVERYTHING_ERROR_REGISTERCLASSEX = 3; private const int EVERYTHING_ERROR_CREATEWINDOW = 4; private const int EVERYTHING_ERROR_CREATETHREAD = 5; private const int EVERYTHING_ERROR_INVALIDINDEX = 6; private const int EVERYTHING_ERROR_INVALIDCALL = 7; [DllImport(LIB_NAME)] public static extern int Everything_SetSearch(string lpSearchString); [DllImport(LIB_NAME)] public static extern void Everything_SetMatchPath(bool bEnable); [DllImport(LIB_NAME)] public static extern void Everything_SetMatchCase(bool bEnable); [DllImport(LIB_NAME)] public static extern void Everything_SetMatchWholeWord(bool bEnable); [DllImport(LIB_NAME)] public static extern void Everything_SetRegex(bool bEnable); [DllImport(LIB_NAME)] public static extern void Everything_SetMax(int dwMax); [DllImport(LIB_NAME)] public static extern void Everything_SetOffset(int dwOffset); [DllImport(LIB_NAME)] public static extern bool Everything_GetMatchPath(); [DllImport(LIB_NAME)] public static extern bool Everything_GetMatchCase(); [DllImport(LIB_NAME)] public static extern bool Everything_GetMatchWholeWord(); [DllImport(LIB_NAME)] public static extern bool Everything_GetRegex(); [DllImport(LIB_NAME)] public static extern UInt32 Everything_GetMax(); [DllImport(LIB_NAME)] public static extern UInt32 Everything_GetOffset(); [DllImport(LIB_NAME)] public static extern string Everything_GetSearch(); [DllImport(LIB_NAME)] public static extern int Everything_GetLastError(); [DllImport(LIB_NAME)] public static extern bool Everything_Query(bool bWait); [DllImport(LIB_NAME)] public static extern void Everything_SortResultsByPath(); [DllImport(LIB_NAME)] public static extern int Everything_GetNumFileResults(); [DllImport(LIB_NAME)] public static extern int Everything_GetNumFolderResults(); [DllImport(LIB_NAME)] public static extern int Everything_GetNumResults(); [DllImport(LIB_NAME)] public static extern int Everything_GetTotFileResults(); [DllImport(LIB_NAME)] public static extern int Everything_GetTotFolderResults(); [DllImport(LIB_NAME)] public static extern int Everything_GetTotResults(); [DllImport(LIB_NAME)] public static extern bool Everything_IsVolumeResult(int nIndex); [DllImport(LIB_NAME)] public static extern bool Everything_IsFolderResult(int nIndex); [DllImport(LIB_NAME)] public static extern bool Everything_IsFileResult(int nIndex); [DllImport(LIB_NAME)] public static extern void Everything_GetResultFullPathName(int nIndex, StringBuilder lpString, int nMaxCount); [DllImport(LIB_NAME)] public static extern void Everything_Reset(); [DllImport(LIB_NAME)] public static extern IntPtr Everything_GetResultFileName(int nIndex); [DllImport(LIB_NAME)] public static extern IntPtr Everything_GetResultPath(int nIndex); [DllImport(LIB_NAME)] public static extern bool Everything_GetResultDateModified(int nIndex, out long lpFileTime); [DllImport(LIB_NAME)] public static extern bool Everything_IsAdmin(); [DllImport(LIB_NAME)] public static extern bool Everything_IsAppData(); [DllImport(LIB_NAME)] public static extern long Everything_GetRevision(); #endregion 引用定义 } internal class Everything64 { private const string LIB_NAME = "dll/Everything64.dll"; #region 引用定义 private const int EVERYTHING_OK = 0; private const int EVERYTHING_ERROR_MEMORY = 1; private const int EVERYTHING_ERROR_IPC = 2; private const int EVERYTHING_ERROR_REGISTERCLASSEX = 3; private const int EVERYTHING_ERROR_CREATEWINDOW = 4; private const int EVERYTHING_ERROR_CREATETHREAD = 5; private const int EVERYTHING_ERROR_INVALIDINDEX = 6; private const int EVERYTHING_ERROR_INVALIDCALL = 7; [DllImport(LIB_NAME)] public static extern int Everything_SetSearch(string lpSearchString); [DllImport(LIB_NAME)] public static extern void Everything_SetMatchPath(bool bEnable); [DllImport(LIB_NAME)] public static extern void Everything_SetMatchCase(bool bEnable); [DllImport(LIB_NAME)] public static extern void Everything_SetMatchWholeWord(bool bEnable); [DllImport(LIB_NAME)] public static extern void Everything_SetRegex(bool bEnable); [DllImport(LIB_NAME)] public static extern void Everything_SetMax(int dwMax); [DllImport(LIB_NAME)] public static extern void Everything_SetOffset(int dwOffset); [DllImport(LIB_NAME)] public static extern bool Everything_GetMatchPath(); [DllImport(LIB_NAME)] public static extern bool Everything_GetMatchCase(); [DllImport(LIB_NAME)] public static extern bool Everything_GetMatchWholeWord(); [DllImport(LIB_NAME)] public static extern bool Everything_GetRegex(); [DllImport(LIB_NAME)] public static extern UInt32 Everything_GetMax(); [DllImport(LIB_NAME)] public static extern UInt32 Everything_GetOffset(); [DllImport(LIB_NAME)] public static extern string Everything_GetSearch(); [DllImport(LIB_NAME)] public static extern int Everything_GetLastError(); [DllImport(LIB_NAME)] public static extern bool Everything_Query(bool bWait); [DllImport(LIB_NAME)] public static extern void Everything_SortResultsByPath(); [DllImport(LIB_NAME)] public static extern int Everything_GetNumFileResults(); [DllImport(LIB_NAME)] public static extern int Everything_GetNumFolderResults(); [DllImport(LIB_NAME)] public static extern int Everything_GetNumResults(); [DllImport(LIB_NAME)] public static extern int Everything_GetTotFileResults(); [DllImport(LIB_NAME)] public static extern int Everything_GetTotFolderResults(); [DllImport(LIB_NAME)] public static extern int Everything_GetTotResults(); [DllImport(LIB_NAME)] public static extern bool Everything_IsVolumeResult(int nIndex); [DllImport(LIB_NAME)] public static extern bool Everything_IsFolderResult(int nIndex); [DllImport(LIB_NAME)] public static extern bool Everything_IsFileResult(int nIndex); [DllImport(LIB_NAME)] public static extern void Everything_GetResultFullPathName(int nIndex, StringBuilder lpString, int nMaxCount); [DllImport(LIB_NAME)] public static extern void Everything_Reset(); [DllImport(LIB_NAME)] public static extern IntPtr Everything_GetResultFileName(int nIndex); [DllImport(LIB_NAME)] public static extern IntPtr Everything_GetResultPath(int nIndex); [DllImport(LIB_NAME)] public static extern bool Everything_GetResultDateModified(int nIndex, out long lpFileTime); [DllImport(LIB_NAME)] public static extern bool Everything_IsAdmin(); [DllImport(LIB_NAME)] public static extern bool Everything_IsAppData(); [DllImport(LIB_NAME)] public static extern long Everything_GetRevision(); #endregion 引用定义 } internal static void Everything_SetSearch(string sKeyWord) { if (IntPtr.Size == 8) Everything64.Everything_SetSearch(sKeyWord); else Everything32.Everything_SetSearch(sKeyWord); } internal static bool Everything_Query(bool bWait) { if (IntPtr.Size == 8) return Everything64.Everything_Query(bWait); else return Everything32.Everything_Query(bWait); } internal static int Everything_GetNumResults() { if (IntPtr.Size == 8) return Everything64.Everything_GetNumResults(); else return Everything32.Everything_GetNumResults(); } internal static bool Everything_IsFolderResult(int idx) { if (IntPtr.Size == 8) return Everything64.Everything_IsFolderResult(idx); else return Everything32.Everything_IsFolderResult(idx); } internal static void Everything_SortResultsByPath() { if (IntPtr.Size == 8) Everything64.Everything_SortResultsByPath(); else Everything32.Everything_SortResultsByPath(); } internal static void Everything_GetResultFullPathName(int i, StringBuilder buf, int bufsize) { if (IntPtr.Size == 8) Everything64.Everything_GetResultFullPathName(i, buf, bufsize); else Everything32.Everything_GetResultFullPathName(i, buf, bufsize); } internal static IntPtr Everything_GetResultFileName(int idx) { if (IntPtr.Size == 8) return Everything64.Everything_GetResultFileName(idx); else return Everything32.Everything_GetResultFileName(idx); } internal static IntPtr Everything_GetResultPath(int nIndex) { if (IntPtr.Size == 8) return Everything64.Everything_GetResultPath(nIndex); else return Everything32.Everything_GetResultPath(nIndex); } internal static bool Everything_GetResultDateModified(int nIndex, out long lpFileTime) { if (IntPtr.Size == 8) return Everything64.Everything_GetResultDateModified(nIndex, out lpFileTime); else return Everything32.Everything_GetResultDateModified(nIndex, out lpFileTime); } internal static long Everything_GetRevision() { if (IntPtr.Size == 8) return Everything64.Everything_GetRevision(); else return Everything32.Everything_GetRevision(); } internal static long Everything_GetLastError() { if (IntPtr.Size == 8) return Everything64.Everything_GetLastError(); else return Everything32.Everything_GetLastError(); } }
三、调用
private static void Main(string[] args) { try { string text = "文件"; Everything.Everything_SetSearch(text); Everything.Everything_Query(true); int fileNum = Everything.Everything_GetNumResults(); if (fileNum != 0) { const int bufsize = 260; StringBuilder buf = new StringBuilder(bufsize); for (int i = 0; i < fileNum; i++) { long date_modified; long size; Everything.Everything_GetResultFullPathName(i, buf, bufsize); String 后缀名 = System.IO.Path.GetExtension(buf.ToString()); } } else { Console.WriteLine("搜索结果为0"); } } catch (Exception ex) { throw; } }
四、效果
评论区