找回密码
 加入
搜索
查看: 11286|回复: 4

[AU3基础] 【已解决】python可以调用everything dll,autoit调用dll失败。求高手指教

[复制链接]
发表于 2013-3-10 18:30:49 | 显示全部楼层 |阅读模式
本帖最后由 hao1032 于 2013-3-10 18:53 编辑

everything是一个快速搜索的工具,官网提供了sdk,可以通过dll和everything进程通信。
需要安装everything软件并开启,才能使用dll
sdk地址:http://support.voidtools.com/everything/SDK

以下是python代码,及运行结果(有4480个txt文档):
#coding=utf-8

from ctypes import *
import sys,os

superSearch=windll.LoadLibrary("Everything.dll")
superSearch.Everything_SetSearchW(c_wchar_p("*.txt"))
superSearch.Everything_QueryW(1)
rsNum=superSearch.Everything_GetNumResults()
print "txt num:", rsNum
del superSearch

>>> 
txt num: 4480
>>> 
下面是我写的autoit脚本,及结果(0个txt文档):
$dll = DllOpen("Everything.dll")
$result = DllCall($dll, "none", "Everything_SetSearchW", "wstr", "*.txt")
$result = DllCall($dll, "none", "Everything_QueryW", "BOOL", 1)
$result = DllCall($dll, "DWORD", "Everything_GetNumResults", "none")
DllClose($dll)
MsgBox(0, 'test', $result)
求高手指教,是哪里出错了??(个人认为是Everything_SetSearchW函数的参数类型问题,但是不知道怎么改)

发玩帖子后,在论坛看到了这个文章:http://www.autoitx.com/forum.php?mod=viewthread&tid=26755
看到了这句话:
至於 $Result[0] 本身代表我們調用的 win32 API 它的返回值。

然后将将代码改成了下面的样子,发现能结果就正确了
$dll = DllOpen("Everything.dll")
$result = DllCall($dll, "none", "Everything_SetSearchW", "wstr", "*.txt")
$result = DllCall($dll, "none", "Everything_QueryW", "BOOL", 1)
$result = DllCall($dll, "DWORD", "Everything_GetNumResults")
DllClose($dll)
MsgBox(0, 'test', $result[0])
发表于 2013-3-10 20:51:58 | 显示全部楼层
学习了,上次还在想Au3能不能调用everything来搜索呢,这下可以了,感谢!
发表于 2013-3-10 21:17:10 | 显示全部楼层
非常好的东西,谢谢楼主分享。。。。。
发表于 2013-5-8 11:16:55 | 显示全部楼层
明细列表 怎么调?
发表于 2013-8-31 00:08:28 | 显示全部楼层
谢谢楼主分享 我以前一直想要这个呢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-24 05:12 , Processed in 0.079437 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表