需要 

AntiVC.dll文件


il

 



unit Delphi7;

interface

uses
Windows, Classes, Graphics, Controls, Forms,
ExtCtrls, StdCtrls, jpeg;

type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Image1: TImage;
Edit3: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
CdsIndex:integer;
path: array[0..256] of Char;

function LoadCdsFromFile(CdsFile:string;Password:string):integer;stdcall;external 'AntiVC.dll'name 'LoadCdsFromFile';
function LoadCdsFromBuffer(FileBuffer:Pointer;FileBufLen:integer;Password:string):integer;stdcall;external 'AntiVC.dll' name 'LoadCdsFromBuffer';
function GetVcodeFromFile(CdsFileIndex:integer;FilePath:string;Vcode:string):boolean;stdcall;external 'AntiVC.dll' name 'GetVcodeFromFile';
function GetVcodeFromBuffer(CdsFileIndex:integer;ImgBuffer:Pointer;ImgBufLen:integer;Vcode:string):boolean;stdcall;external 'AntiVC.dll' name 'GetVcodeFromBuffer';
function URLDownloadToFile(pCaller:integer;szURL:string;szFileName:string;dwReserved:Integer;lpfnCB:Integer):Integer;stdcall;external 'urlmon.dll' name 'URLDownloadToFileA';

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
GetCurrentDirectory(SizeOf(path), path);
Self.Edit1.Text := path + '\网易论坛.cds';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
mStream: TMemoryStream;
begin
//以下演示LoadCdsFromFile函数
CdsIndex := LoadCdsFromFile(Edit1.Text,'thisisdemo'); //填入密码 加载对应的识别库文件
//以下演示LoadCdsFromBuffer函数
// mStream := TMemoryStream.Create;
// mStream.LoadFromFile(Edit1.Text);
// CdsIndex := LoadCdsFromBuffer(mStream.Memory,mStream.Size,'thisisdemo');
if(CdsIndex <> -1) then
begin
Button2.Enabled := True;
Button3.Enabled := True;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
tf:string;
begin
tf := path + '\temp.JPG';
URLDownloadToFile(0,Edit2.Text,tf,0,0);
//Image1.Picture.LoadFromFile(tf);
Image1.Visible := true;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
result: string;
tf:string;
mStream: TMemoryStream;
begin
tf := path + '\temp.JPG';
result := StringOfChar(' ',256); //预置字符串,以开辟一个空间接收返回的验证码
//以下为GetVcodeFromFile函数演示
//GetVcodeFromURL与此类似,只是把tf换成验证码地址
// if(GetVcodeFromFile(CdsIndex,tf,result)) then
// begin
// Edit3.Text := result;
// end
//以下为GetVcodeFromBuffer函数演示
mStream := TMemoryStream.Create;
mStream.LoadFromFile(tf); {把文件读入内存流,借此演示内存调用方式}
if(GetVcodeFromBuffer(CdsIndex,mStream.Memory,mStream.Size,result)) then
begin
Edit3.Text := result;
end
end;

end.



object Form1: TForm1
Left = 449
Top = 286
Caption = 'AntiVC.dll'#30340'Delphi'#35843#29992#20363#31243
ClientHeight = 239
ClientWidth = 316
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 16
Top = 8
Width = 185
Height = 13
AutoSize = False
Caption = #35831#35774#32622#35201#36733#20837#30340'cds'#25991#20214#36335#24452
end
object Label2: TLabel
Left = 16
Top = 72
Width = 185
Height = 13
AutoSize = False
Caption = #35831#35774#32622#39564#35777#30721#22270#20687#19979#36733#22320#22336
end
object Image1: TImage
Left = 16
Top = 128
Width = 165
Height = 65
end
object Edit1: TEdit
Left = 16
Top = 40
Width = 289
Height = 21
ImeName = #20013#25991'('#31616#20307') - '#25628#29399#25340#38899#36755#20837#27861
TabOrder = 0
end
object Edit2: TEdit
Left = 16
Top = 96
Width = 289
Height = 21
ImeName = #20013#25991'('#31616#20307') - '#25628#29399#25340#38899#36755#20837#27861
TabOrder = 1
Text = 'http://bbs.ent.163.com/bbs/checkcode.jsp?1201359681906'
end
object Button1: TButton
Left = 211
Top = 138
Width = 97
Height = 24
Caption = #36733#20837'CDS'#25991#20214
TabOrder = 2
OnClick = Button1Click
end
object Button2: TButton
Left = 208
Top = 168
Width = 97
Height = 24
Caption = #19979#36733#39564#35777#30721
Enabled = False
TabOrder = 3
OnClick = Button2Click
end
object Button3: TButton
Left = 208
Top = 208
Width = 97
Height = 24
Caption = #35782#21035#39564#35777#30721
Enabled = False
TabOrder = 4
OnClick = Button3Click
end
object Edit3: TEdit
Left = 16
Top = 211
Width = 165
Height = 21
ImeName = #20013#25991'('#31616#20307') - '#25628#29399#25340#38899#36755#20837#27861
TabOrder = 5
end
end



用法说明:

使用时,请先载入识别库,然后才可以识别验证码。识别库只需成功载入一次,不要多次重复载入同一个识别库。可

以同时载入多个不同的识别库,载入类函数将返回一个整数,这个整数标示了不同的识别库,在调用识别类函数时,

指定识别库索引,即可使用指定的识别库。

------------以下两个函数用于载入识别库--------
Private Declare Function LoadCdsFromFile Lib "AntiVC.dll" (ByVal FilePath As String,ByVal Password As

String) As Long
函数功能说明:从文件中载入识别库文件,返回识别库索引,以便后面的函数调用。返回-1代表载入出错。
函数参数说明:
FilePath :文本型,识别库文件所在全路径。
Password :文本型,识别库调用密码

Private Declare Function LoadCdsFromBuffer Lib "AntiVC.dll" (ByVal FileBuffer As Long,ByVal FileBufLen As

Long,ByVal Password As String) As Long
函数功能说明:从内存中载入识别库文件,返回识别库索引,以便后面的函数调用。返回-1代表载入出错。
函数参数说明:
FileBuffer :整数型,一个记录了识别库文件的二进制数据的字节数组,或一块同样功能的内存区域。这里请提供数组

第一个成员的地址,或内存区域的地址。
FileBufLen :整数型,上述字节数组的数组成员数,或内存区域大小。
Password :文本型,识别库调用密码

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

--------以下五个函数用于识别验证码-------------
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 GetVcodeFromHWND Lib "AntiVC.dll" (ByVal CdsFileIndex As Long,ByVal HWND As

Long,ByVal lpRect As Long, ByVal Vcode As String,ByVal DebugMode As Long) As Boolean
函数功能说明:使用CdsFileIndex对应的识别库,从某个窗口或控件中截取全部或部分区域截图,并自动识别后返回

。这个函数支持从隐藏的窗口或控件中截图,但不支持最小化的窗口或控件。
函数参数说明:
CdsFileIndex :整数型,识别库索引,用于确定这个图像文件对应哪个识别库。
HWND ,整数型,要截图的窗口句柄。
lpRect :整数型,要截图的区域,提供0代表截取窗口全部区域,否则请提供一个RECT结构类型的地址,该结构说明

了要截图的区域。
Vcode :文本型,返回的验证码字符串,使用该参数前需要将一个足够长的空白字符串赋值给它。
DebugMode :整数型,调试路径。正常调用请提供0,如果要把截图数据保存到磁盘文件,这里请提供一个字符串变

量的地址,这个字符串就是保存的路径。

Private Declare Function GetVcodeFromIECache Lib "AntiVC.dll" (ByVal CdsFileIndex As Long,ByVal ImgURL

As String,ByVal Vcode As String) As Boolean
函数功能说明:使用CdsFileIndex对应的识别库,从IE缓存中搜索ImgURL所指向的图像文件,成功返回True,否则返

回False。该函数不会从网络上下载图像文件,而是在IE缓存中搜索,如果没有事先浏览过ImgURL所在的网页,这个

函数执行不会成功。使用时,请先用代码或浏览器浏览验证码所在网页,确保IE缓存保存了验证码图像文件。
函数参数说明:
CdsFileIndex :整数型,识别库索引,用于确定这个图像文件对应哪个识别库。
ImgURL :图像文件所在网址。这里请直接输入验证码图像的URL地址,函数将用这个地址确定相应的图像文件路径。
Vcode :文本型,返回的验证码字符串,使用该参数前需要将一个足够长的空白字符串赋值给它。

Private Declare Function GetVcodeFromHBitmap Lib "AntiVC.dll" (ByVal CdsFileIndex As Long,ByVal HBitmap

As Long,ByVal Vcode As String) As Boolean
函数功能说明:使用CdsFileIndex对应的识别库,识别一个HBitmap所指向的位图数据,成功返回True,否则返回

False。这里HBitmap是位图句柄,请直接传递位图句柄给它。
函数参数说明:
CdsFileIndex :整数型,识别库索引,用于确定这个图像文件对应哪个识别库。
HBitmap :验证码图像的位图句柄。必须是位图句柄!
Vcode :文本型,返回的验证码字符串,使用该参数前需要将一个足够长的空白字符串赋值给它。

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

PS:由于可能导致某些不良杀毒软件误报,GetVcodeFromURL这个函数在这个版本中已经删除!

-----------以下一个函数用于释放识别库-----------
Private Declare Function FreeAllCdsFile Lib "AntiVC.dll" ()
函数功能说明:释放全部载入的识别库,回收占用的内存。
参数:无
返回值:无

-----------以下一个函数用于设定超时时间------------------
Private Declare Function SetTimeOut Lib "AntiVC.dll" (ByVal CdsFileIndex As Long,ByVal TimeOut As Long)

As Boolean
函数功能说明:设定识别超时时间,超时直接返回,不再继续识别。设定成功返回真,否则返回假。
函数参数说明:
CdsFileIndex :整数型,识别库索引,用于确定这个图像文件对应哪个识别库。
TimeOut :整数型,超时时间,单位为毫秒。

-----------以下一个函数用于设定识别库选项------------------
Private Declare Function SetCdsOption Lib "AntiVC.dll" (ByVal CdsFileIndex As Long,ByVal OptionIndex As

Long,ByVal OptionValue As Long) As Boolean
函数功能说明:设定识别库选项。设定成功返回真,否则返回假。
函数参数说明:
CdsFileIndex :整数型,识别库索引,用于确定这个图像文件对应哪个识别库。
OptionIndex :整数型,选项索引,取值范围1~9。
OptionValue :整数型,选项数值。

参数详解:
OptionIndex OptionValue
1. 最小相似度 取值范围:0~100
2. 识别模式 取值范围:0~3
3. 分割方式 取值范围:0~2
4. 识别加速 取值范围:0,非零,分别代表逻辑值假和真
5. 字符个数 取值范围:大于0
6. 分割份数 取值范围:大于0
7. 去除杂点 取值范围:0,非零,分别代表逻辑值假和真
8. 去除白边 取值范围:0,非零,分别代表逻辑值假和真
9. 去除毛刺 取值范围:0,非零,分别代表逻辑值假和真

-----------以下一个函数用于计算数学表达式------------------
Private Declare Function Calculator Lib "AntiVC.dll" (ByVal Expression As String,ByVal CalcResult As String)

As Boolean
函数功能说明:计算数学表达式。失败返回空文本,成功返回计算结果文本。功能非常简单,只是用来计算那些需要

填写计算结果的验证码。计算完成返回真,否则返回假。
函数参数说明:
Expression :文本型,数学表达式,只能计算简单的+-×/,不能有括号,且算术符号只能有一个。
CalcResult :文本型,计算结果,使用需要将一个足够长的空白字符串赋值给它。

-----------以下一个函数用于设置文本参数为unicode格式------------------
Private Declare Function UseUnicodeString Lib "AntiVC.dll" (ByVal UnicodeString As Boolean)
函数功能说明:设置传入dll的各个文本类型参数使用unicode格式,一次设置长期有效。无返回值。
函数参数说明:
UnicodeString :逻辑型,为真文本类型参数使用unicode格式,否则使用ansi格式。