找回密码
 加入
搜索
查看: 5131|回复: 11

[系统综合] 【此贴一直待解决】关于光速搜索sdk的 dllcall 调用指针问题

  [复制链接]
发表于 2012-9-4 06:00:15 | 显示全部楼层 |阅读模式
本帖最后由 iamwonvy 于 2012-9-5 22:23 编辑

http://finder.sdo.com/upload/for ... thread&tid=1232

一共四个函数,三个函数已经写好了,FindA / FindW这个函数的回调函数返回不了数组,
风行者说要创建结构,我不是很懂……

#include <Array.au3>

;;-----------------------------------------------------------------------------------------------------------------
;启动Finder
Func LaunchFinder()
        local $hDll = DllOpen("finderlib64.dll")
        $result = DllCall($hDll, "bool", "LaunchFinder")
        If  @error Then ConsoleWrite(@error)
        If IsArray($result) Then
                If $result[0]=1 Then
                        MsgBox(0,"","Finder启动成功")
                Else
                        MsgBox(0,"","Finder启动失败")
                EndIf
        EndIf
        DllClose($hDll)
EndFunc

;-----------------------------------------------------------------------------------------------------------------
;~ ;监测调用环境,比如Finder是否存在
;~ local $hDll = DllOpen("finderlib64.dll")
;~ $result = DllCall($hDll, "Int", "CheckRequirement")
;~ If  @error Then ConsoleWrite(@error)
;~         If IsArray($result) Then
;~                 Switch $result[0]
;~                         Case 0
;~                                 MsgBox(0,0,"无错")
;~                         Case 1
;~                                 MsgBox(0,1,"超时")
;~                         Case 2
;~                                 MsgBox(0,2,"Finder没有运行")
;~                         Case 3
;~                                 MsgBox(0,3,"通信出错")
;~                         Case 4
;~                                 MsgBox(0,4,"Finder版本不支持")
;~                         Case 9
;~                                 MsgBox(0,9,"Finder没有安装")
;~                         Case 10
;~                                 MsgBox(0,10,"Finder正在初始化当中")
;~                         Case 99
;~                                 MsgBox(0,99,"未知错误")        
;~                         Case Else
;~                                 _ArrayDisplay($result, "其它")
;~                 EndSwitch
;~         EndIf
;~ DllClose($hDll)


;-----------------------------------------------------------------------------------------------------------------
;~ ;Finder是否已经在运行
;~ local $hDll = DllOpen("finderlib64.dll")
;~ $result = DllCall($hDll, "bool", "IsFinderRunning")
;~ If  @error Then ConsoleWrite(@error)
;~         If IsArray($result) Then
;~                 If $result[0] = 1 Then
;~                                 MsgBox(0,"","Finder已经在运行")
;~                 Else
;~                                 MsgBox(0,"","Finder没有运行")                
;~                 EndIf
;~         EndIf
;~ DllClose($hDll)




;;-----------------------------------------------------------------------------------------------------------------
local $hDll = DllOpen(@ScriptDir&"\finderlib64.dll")

; 创建回调函数
$handle = DLLCallbackRegister("TResultCallBack", "none", "str;int;int;int")

; 调用_Find
$result = DllCall($hDll, _
"int", _                                                                ;返回值类型
"_Find", _                                                                 ;函数名称
"str", "*.jpg", _                                                ;AStr                                 搜索关键词
"ptr", DllCallbackGetPtr($handle), _        ;ACallback                         回调函数
"str", "", _                                                        ;ADir                                 制定目录(单个)
"str", "", _                                                        ;AExcludeDir                后缀过滤(多个)
"str", "", _                                                        ;AFilter
"str", 1000, _                                                        ;ACount                                 返回结果数量
"str", 0, _                                                                ;Afrom                                 开始结果位置
"BOOL", True, _                                                        ;ASpaceOr                         是否匹配任一关键词
"BOOL", False, _                                                ;AWholeWords                 匹配全词
"BOOL", False, _                                                ;ACaseSensitive         区分大小写
"BOOL", True, _                                                        ;AIncludeDir                 搜索目录
"BOOL", True, _                                                        ;AIncludeFiles                 搜索文件
"WORD", 1000 _                                                        ;ATimeoutMS                        超时时间
)
If  @error Then ConsoleWrite(@error)

;释放回调函数内存
DllCallbackFree($handle)

DllClose($hDll)

;下面是回调函数根据传递过来的值进行处理
Func TResultCallBack($Buffer, $BufferCount, $TotalCount, $ErrorCode)
;~         MsgBox(0,0,IsString($Buffer))
        
;~         _ArrayDisplay($Buffer)
        MsgBox(0,0,$TotalCount)
EndFunc


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2012-9-4 08:34:29 | 显示全部楼层
沙发 都没人回复
发表于 2012-9-4 10:18:20 | 显示全部楼层
我也是,看dllcall,有教程都看不懂,不知道还有更浅显的教程不……
 楼主| 发表于 2012-9-4 11:41:03 | 显示全部楼层

等待救星……
发表于 2012-9-4 16:29:26 | 显示全部楼层
悲剧。。
 楼主| 发表于 2012-9-7 01:28:53 | 显示全部楼层
等待解决中 嘻嘻
发表于 2012-9-7 21:47:15 | 显示全部楼层
看来要p版大神出手了
发表于 2012-9-11 23:07:44 | 显示全部楼层
谁能告诉我这东西干什么用的!
发表于 2012-9-13 14:33:27 | 显示全部楼层
真的搜的那么快吗?
 楼主| 发表于 2012-9-18 09:20:53 | 显示全部楼层
回复 10# liongodmien


    是很快 不过我还不会写
发表于 2012-9-19 22:11:39 | 显示全部楼层
回调函数参数错误,第一个参数应该是指向指针的指针
 楼主| 发表于 2012-9-21 11:22:42 | 显示全部楼层
回复 12# ceoguang


    怎么获取指向指针的值呢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-20 07:08 , Processed in 0.079807 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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