首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

用过资料搜索引擎everything的达人请进

2012-09-14 
用过文件搜索引擎everything的达人请进因为程序需要做一次搜索本地硬盘的工作,因此在下学习了一下著名的文

用过文件搜索引擎everything的达人请进
因为程序需要做一次搜索本地硬盘的工作,因此在下学习了一下著名的文件搜索引擎Everything,下载了它的SDK开发包。

然后在网上找了一下类似的学习资料,依样画葫芦的在本机弄了一个进行调试,发现它所给的库和引擎都做了很好的封装,于是直接使用,下面是我写的代码:

Everything.h头文件中,它原本的函数声明都是类似这样的,结果发现无法进行编译:

C/C++ code
__declspec(dllimport) void __stdcall Everything_SetSearchW(LPCWSTR lpString);

于是我将其改成了
C/C++ code
extern "C" __declspec(dllimport) void __stdcall Everything_SetSearchW(LPCWSTR lpString);

这样就通过了编译可以运行了。

然后在stdafx.h中包含头文件和库
C/C++ code
#include "../Everything-SDK/include/Everything.h"#include "../Everything-SDK/ipc/Everything_IPC.h"#pragma comment(lib, "../Everything-SDK/lib/Everything.lib")


程序执行
C/C++ code
void CtestDlg::OnBnClickedButtonTest(){    ::Everything_SetSearchA(_T("test.exe"));    if (TRUE != ::Everything_QueryA(FALSE))    {        int Ret = ::Everything_GetLastError();        return;    }    int Num = ::Everything_GetNumFileResults();    CString szResult;    for (int i = 0; i < Num; ++ i)    {        szResult = ::Everything_GetResultPathA(i);        Msg(szResult.GetBuffer());    }}


结果运行时发现一点反应都没有,经过调试发现Everything_QueryA()执行不成功,Everything_GetLastError()错误代码2,查询了一下说明,结果说是“IPC is not available. Make sure Everything is running. ”。

这就完全不能理解了……看起来我和别人的代码没区别啊,IPC它又说是什么“Inter Process Communication”进程间通信,我查了半天都没查到问题所在……Everything的论坛也找不到注册的地方,而且看起来也完全没人回答问题。实在没办法到这里来试一下运气,看看有没有用过Everything的达人能指点一下:我遇到的这个问题该如何解决...各位用过的人又是如何处理的等等……

这是我的项目文件

[解决办法]
API不可以实现么?还是要追求速度?
[解决办法]
探讨
引用:
API不可以实现么?还是要追求速度?

主要就是为了追求速度呀……
缺省的API第一次搜索时建立索引和查询的速度太慢了

热点排行