找回密码
 加入
搜索
查看: 4095|回复: 1

[IE类操作] 验证码DLL文件接口选择问题

[复制链接]
发表于 2014-4-29 10:43:28 | 显示全部楼层 |阅读模式
验证码已经可以识别,但是用的ImgURL函数。
本人需要用本地图片,ImgURL无法识别本地图片。所以需要更换DLL的函数接口。

    请问本人选择debugmode 正确吗?
(DebugMode :整数型,调试路径。正常调用请提供0,如果要把截图数据保存到磁盘文件,这里请提供一个字符串变量的地址,这个字符串就是保存的路径)



以下是DLL文件说明:


——————————————————————————————————————————
Private Declare Function LoadCdsFromBuffer Lib "AntiVC.dll" (ByVal FileBuffer As Long,FileBufLen As Long) As Long
函数功能说明:从内存中载入识别库文件,返回识别库索引,以便后面的函数调用。返回-1代表载入出错。
参数说明:
FileBuffer :整数型,一个记录了识别库文件的二进制数据的字节数组,或一块同样功能的内存区域。这里请提供数组第一个成员的地址,或内存区域的地址。
FileBufLen :整数型,上述字节数组的数组成员数,或内存区域大小。

Private Declare Function LoadCdsFromFile Lib "AntiVC.dll" (ByVal FilePath As String) As Long
函数功能说明:从文件中载入识别库文件,返回识别库索引,以便后面的函数调用。返回-1代表载入出错。
参数说明:
FilePath  :文本型,识别库文件所在全路径。

--------以上两个函数选择其一即可---------------

Private Declare Function GetVcodeFromFile Lib "AntiVC.dll" (ByVal CdsFileIndex As Long,ByVal FilePath As String,ByVal Vcode As String) As Boolean
函数功能说明:使用识别库索引对应的识别库,识别一个图像文件,成功返回True,否则返回False。
参数说明:
CdsFileIndex :整数型,识别库索引,用于确定这个图像文件对应哪个识别库。
FilePath :文本型,图像文件所在全路径。
Vcode  :文本型,返回的验证码字符串,使用该参数前需要将一个足够长的空白字符串赋值给它。

Private Declare Function GetVcodeFromBuffer Lib "AntiVC.dll" (ByVal CdsFileIndex As Long,ByVal ImgBuffer As Long,ByVal ImgBufLen As long,ByVal Vcode As String) As Boolean
函数功能说明:使用CdsFileIndex对应的识别库,识别一个记录了图像文件的二进制数据的字节数组,或一块同样功能的内存区域,成功返回True,否则返回False。
参数说明:
CdsFileIndex :整数型,识别库索引,用于确定这个图像文件对应哪个识别库。
ImgBuffer :整数型,一个记录了图像文件的二进制数据的字节数组,或一块同样功能的内存区域。这里请提供数组第一个成员的地址,或内存区域的地址。
ImgBufLen :整数型,上述字节数组的数组成员数,或内存区域大小。
Vcode :文本型,返回的验证码字符串,使用该参数前需要将一个足够长的空白字符串赋值给它。

Private Declare Function GetVcodeFromURL Lib "AntiVC.dll" (ByVal CdsFileIndex As Long,ByVal ImgURL As String,ByVal Vcode As String) As Boolean
函数功能说明:使用CdsFileIndex对应的识别库,识别一个从指定网址下载的图像文件,成功返回True,否则返回False。该函数内置了文件下载功能。
参数说明:
CdsFileIndex :整数型,识别库索引,用于确定这个图像文件对应哪个识别库。
ImgURL :图像文件所在网址。
Vcode :文本型,返回的验证码字符串,使用该参数前需要将一个足够长的空白字符串赋值给它。


Private Declare Function GetVcodeFromHWND Lib "AntiVC.dll" (ByVal CdsFileIndex As Long,ByVal HWND As String,ByVal lpRect As Long, ByVal Vcode As String,ByVal DebugMode As Long) As Boolean
函数功能说明:使用CdsFileIndex对应的识别库,从某个窗口或控件中截取全部或部分区域截图,并自动识别并返回。这个函数支持从隐藏的窗口或控件中截图,但不支持最小化的窗口或控件。
参数说明:
CdsFileIndex :整数型,识别库索引,用于确定这个图像文件对应哪个识别库。
HWND ,整数型,要截图的窗口句柄。
lpRect :整数型,要截图的区域,提供0代表截取窗口全部区域,否则请提供一个RECT结构类型的地址,该结构说明了要截图的区域
Vcode :文本型,返回的验证码字符串,使用该参数前需要将一个足够长的空白字符串赋值给它。
DebugMode :整数型,调试路径。正常调用请提供0,如果要把截图数据保存到磁盘文件,这里请提供一个字符串变量的地址,这个字符串就是保存的路径。

-----------以上四个函数请根据情况选择其一即可------------------
—————————————————————————————————————————————



我的验证码识别脚本:
$AntiDll = DllOpen ("AntiVC.dll") ;识别的dll路径
$LocalCDS = @ScriptDir&"\blog.ce.cds";识别库的路径
$index = DllCall($AntiDll,"long","LoadCdsFromFile","str",$LocalCDS)
If $index[0] = -1 Then
        MsgBox(0, "错误", "识别库不存在或者打不开")
        exit
         EndIf

$DebugMode = "D:\aaa.bmp";验证码的地址
$CdsResult = DllCall($AntiDll,"int","GetVcodeFromURL","int",$index[0],"str",$DebugMode,"str",0)
If $CdsResult[0] = -1 Then
        MsgBox(0, "错误","识别验证码失败")
                exit
EndIf
DllClose($AntiDll)
msgbox(0,'识别网页验证码结果',$CdsResult[3])
 楼主| 发表于 2014-4-29 13:14:04 | 显示全部楼层
已解决

$AntiDll = DllOpen ("AntiVC.dll") ;识别的dll路径
$LocalCDS = @ScriptDir&"\blog.ce.cds";识别库的路径
$index = DllCall($AntiDll,"long","LoadCdsFromFile","str",$LocalCDS)
If $index[0] = -1 Then
        MsgBox(0, "错误", "识别库不存在或者打不开")
        exit
         EndIf

$FilePath = @ScriptDir&"\aaa.bmp";验证码的地址
$CdsResult = DllCall($AntiDll,"int","GetVcodeFromFile","int",$index[0],"str",$FilePath,"str",0)
If $CdsResult[0] = -1 Then
        MsgBox(0, "错误","识别验证码失败")
                exit
EndIf
DllClose($AntiDll)
msgbox(0,'识别网页验证码结果',$CdsResult[3])
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-5 23:26 , Processed in 0.078595 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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