需要
AntiVC.dll文件
http://antiyzm.sinaapp.com/archives/category/detail
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格式。
时间: 2024-10-15 14:30:08