找回密码
 加入
搜索
查看: 18556|回复: 53

亦思验证码DLL 谁会用AU调用 已经解决了 付代码

 火... [复制链接]
发表于 2009-4-15 00:44:56 | 显示全部楼层 |阅读模式
注意事项:调试模式请把DLL和辅助文件程序运行的目录下,其他文件也设置好相应路径,否则会调试出错。

DLL一共4主个命令,3个辅助命令,可以应对各种情况。

1.loadcode:载入验证码  
2.Recognition:识别
3.outitem:取项目名称
4.Writepic:保存图片

5.Recognitiond:另外一种识别,和识别1的区别是不需要传递指针参数。
6.yLength:返回识别结果长度。
7.tebie: 特殊方式处理图片时使用。

[in]:传入参数
[out]:接收参数

以下DLL对于整数型不需要用的就传递 0 ,文本不需要用的就传递 空文本。

文件说明:
ycode.dll主调用DLL,其他的为,辅助文件。

-----------------------------------------------------------------------------------
一般调用顺序为 loadcode - Recognition - Writepic
-----------------------------------------------------------------------------------
.DLL命令 loadcode, 整数型, "ycode.dll"    返回项目数
    [in].参数 code, 整数型    1)验证码库字节集指针地址
    [in].参数 Length, 整数型    2)指针长度
    [in].参数 Address, 文本型  3)验证码库的路径
    [in].参数 pass, 文本型   4)验证码库的密码
   
备注:1+2和3任意选一组就可以了.
      4.输入相应的密码,没有密码就传递一个空文本就可以了.

VB申明:   
Declare Function loadcode Lib "ycode.dll" Alias "loadcode" (ByVal code As Long, ByVal length As Long, ByVal address As String, ByVal pass As String) As Long


返回值
Long,返回项目个数。

-----------------------------------------------------------------------------------
.DLL命令 outitem, 文本型, "ycode.dll"    返回项目名称
    [in].参数 no, 整数型  1) 项目序号

VB申明:   
Declare Function outitem Lib "ycode.dll" Alias "outitem" (ByVal no As Long) As String

返回值
String,返回指定项目序号的项目名字。
-----------------------------------------------------------------------------------
.DLL命令 Recognition, 整数型, "ycode.dll"   返回识别结果内存指针
    [in].参数 ItemNo, 整数型   1)项目号
    [in].参数 picin, 整数型   2)图片内存指针地址
    [in].参数 Length, 整数型   3)指针长度
    [in].参数 Address1, 文本型   4)验证码网络路径
    [in].参数 Address2, 文本型   5)验证码本地路径
    [out].参数 lppicout, 整数型, 传址, 6)返回:图片指针
    [out].参数 lpLength, 整数型, 传址, 7)返回:指针长度
    [out].参数 cLength, 整数型, 传址, 8)返回:字符长度

   
备注:1,将按相应的序号载入相应识别库并识别,如只有一个项目那就传1。
      2+3或4或5任选一个。传递验证码图片数据或网络地址或本地图片路径,如果都不传递的话将按识别库中的默认数据获取。

VB申明:   
Declare Function Recognition Lib "ycode.dll" Alias "Recognition" (ByVal ItemNo As Long, ByVal picin As Long, ByVal Length As Long, ByVal Address1 As String, ByVal Address2 As String, lppicout As Long, lpLength As Long, cLength As Long) As Long

返回值
Long,返回识别结果字符指针。


-----------------------------------------------------------------------------------
.DLL命令 Writepic, 文本型, "ycode.dll"    返回图片长度
    [in].参数 c, 文本型   1)保存路径

自动把图片转换成bmp格式并保存,便于在控件中显示

备注: c如果为空的话就保存到"c:\code.bmp"

VB申明:
Declare Function Writepic Lib "ycode.dll" (ByVal c As String) As Long

返回值
Long,返回图片长度。
-----------------------------------------------------------------------------------
.DLL命令 Recognitiond, 整数型, "ycode.dll"   返回识别结果内存指针
    [in].参数 ItemNo, 整数型   1)项目号
    [in].参数 picin, 整数型   2)图片内存指针地址
    [in].参数 Length, 整数型   3)指针长度
    [in].参数 Address1, 文本型   4)验证码网络路径
    [in].参数 Address2, 文本型   5)验证码本地路径

   
备注:1,将按相应的序号载入相应识别库并识别。
      2+3或4或5任选一个。传递验证码图片数据或网络地址或本地图片路径,如果都不传递的话将按识别库中的默认数据获取。

VB申明:   
Declare Function Recognition Lib "ycode.dll" Alias "Recognition" (ByVal ItemNo As Long, ByVal picin As Long, ByVal Length As Long, ByVal Address1 As String, ByVal Address2 As String) As Long

返回值
Long,返回识别结果字符指针。

======================以上为调用方法==================


$dll = DllOpen ("ycode.dll") 
$Pic_file = ""
$Locacode = @ScriptDir&"\17173.fc"

$a = DllCall($dll,"Int","loadcode","Int","0","Int","0","str",$Locacode,"str","");这里是加载验证码识别库
返回$a[0] 就是项目数
$b = DllCall($dll,"Str","outitem","Int","1");这个是返回项目名称
返回$b[0] 就是项目名称
$c = DllCall($dll,"int","Recognitiond","Int","1","Int","0","Int","0","str","","str",$Pic_file);识别
返回 $c[0] 就是识别出来的字符串指针 

DllCall("ycode.dll","Int","Writepic","str","code.bmp") ;将验证码图片输出为BMP格式,方便GUI显示
$p = DllStructCreate("char Code[128]",$c[0])
MsgBox(0,"", DllStructGetData($p,"Code")&" 字符串指针:"&$c[0]&" 指针大小:"&DllStructGetSize($p)&"    错误:"&@Error)
DllClose($dll)   ; 问题就出在这里,先关闭了DLL。。汗死  。。怎么弄他都是乱码。。指针是空的不乱才怪

$p = 0


 


以上是正确的调用方法
==========================================
所有文件在附件里面

[ 本帖最后由 rho123 于 2009-4-17 23:17 编辑 ]

本帖子中包含更多资源

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

×
发表于 2009-4-15 04:47:50 | 显示全部楼层
怎么解决的我也想知道
发表于 2009-4-15 12:15:23 | 显示全部楼层
什么版本的DLL,演示版的好像没多大用?
 楼主| 发表于 2009-4-15 12:51:39 | 显示全部楼层
2.6破解版本 演示版没有 Ycode.dll 不能发布库
发表于 2009-4-15 22:04:57 | 显示全部楼层
高手!
 楼主| 发表于 2009-4-17 18:34:08 | 显示全部楼层
没人来啊,好几天了汗。。。
 楼主| 发表于 2009-4-17 21:19:12 | 显示全部楼层
翻了下帮助
$c[0] 为返回的字符指针
$p  = DllStructCreate("char Code[128]",$c[0])
MsgBox(0,"",DllStructGetData($p,"Code"))
返回的还是乱码。。 和用DllCall("kernel32.dll","Int","lstrcpyA","str","","int",$c[0])  
返回的一样 汗。。
发表于 2009-4-17 21:19:57 | 显示全部楼层
牛B啊。。。。。。。。。。。
发表于 2009-4-30 01:34:38 | 显示全部楼层
高人,感谢中。。。
发表于 2009-5-6 14:37:18 | 显示全部楼层
好像还是不能识别!
发表于 2009-6-5 04:36:52 | 显示全部楼层
下个试试,学习下
发表于 2009-6-5 07:38:39 | 显示全部楼层
学习了,我。。。看不懂
发表于 2009-6-9 16:16:20 | 显示全部楼层
收藏了,谢谢分享
发表于 2009-6-9 17:04:07 | 显示全部楼层
留名,好贴啊
发表于 2009-8-4 18:20:05 | 显示全部楼层
关注中,好好看
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-19 03:18 , Processed in 0.104754 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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