agohero 发表于 2014-4-29 10:43:28

验证码DLL文件接口选择问题

验证码已经可以识别,但是用的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 = -1 Then
      MsgBox(0, "错误", "识别库不存在或者打不开")
      exit
       EndIf

$DebugMode = "D:\aaa.bmp";验证码的地址
$CdsResult = DllCall($AntiDll,"int","GetVcodeFromURL","int",$index,"str",$DebugMode,"str",0)
If $CdsResult = -1 Then
      MsgBox(0, "错误","识别验证码失败")
                exit
EndIf
DllClose($AntiDll)
msgbox(0,'识别网页验证码结果',$CdsResult)

agohero 发表于 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 = -1 Then
      MsgBox(0, "错误", "识别库不存在或者打不开")
      exit
       EndIf

$FilePath = @ScriptDir&"\aaa.bmp";验证码的地址
$CdsResult = DllCall($AntiDll,"int","GetVcodeFromFile","int",$index,"str",$FilePath,"str",0)
If $CdsResult = -1 Then
      MsgBox(0, "错误","识别验证码失败")
                exit
EndIf
DllClose($AntiDll)
msgbox(0,'识别网页验证码结果',$CdsResult)
页: [1]
查看完整版本: 验证码DLL文件接口选择问题