⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 一个不错的QQ2009验证码自动识别程序源代码
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, SysUtils, Classes, Graphics, Controls, Forms,
  StdCtrls, IdHTTP, ExtCtrls, GifImage, Jpeg, PngImage,
  TabNotBk, ComCtrls, Dialogs;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Label2: TLabel;
    Button1: TButton;
    result: TEdit;
    weburl: TEdit;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  TBArray = Array of byte;
  TABArray = Array of TBArray;

var
  Form1: TForm1;
  stm: TMemoryStream;
  libRds: Array of byte;

implementation
  function loadLib(fn,kind,libFn,libName:pchar):Integer;stdcall;external 'ndocr.dll';
  procedure freeLib(kind:pchar);stdcall;external 'ndocr.dll';
  function getCodeFromStream(var stm:TMemoryStream;colorDepth,kind,para:pchar):pchar;stdcall;external 'ndocr.dll';
  function getCodeFromFile(fn,colorDepth,kind,para:pchar):pchar;stdcall;external 'ndocr.dll';

{$R *.dfm}

function loadPic(stm:TMemoryStream):TBitMap;
var
  bmp: TBitMap;
  gif: TGIFImage;
  jpg: TJPEGImage;
  png: TPNGobject;
  buf: Array[0..3] of byte;
begin
  stm.Position := 0;
  stm.ReadBuffer(buf[0],4);
  stm.Position := 0;

  bmp := TBITMAP.Create();
  if (buf[0]=66) and (buf[1]=77) then begin
    bmp.LoadFromStream(stm)
  end else if (buf[0]=71) and (buf[1]=73) and (buf[2]=70) then begin
    gif := TGifImage.Create();
    gif.LoadFromStream(stm);
    bmp.Assign(gif);
    gif.Free()
  end else if (buf[1]=80) and (buf[2]=78) and (buf[3]=71) then begin
    png := TPNGobject.Create();
    png.LoadFromStream(stm);
    bmp.Assign(png);
    png.Free();
  end else begin
    jpg := TJpegImage.Create();
    jpg.LoadFromStream(stm);
    bmp.Assign(jpg);
    jpg.Free();
  end;

  result := bmp;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  idhttp: TIDHttp;
  bmp: TBitMap;
begin
  stm.Clear();
  idhttp := TIDHttp.Create(form1);
  try
    idhttp.Get(weburl.Text,stm);
  except
    stm.LoadFromFile(weburl.Text);
  end;
  idhttp.free();

  form1.result.Text := getCodeFromStream(stm,'','normal','3_1');

  bmp := loadPic(stm);
  form1.Image1.Canvas.Brush.Color := clBlack;
  form1.Image1.Canvas.FillRect(Rect(0,0,165,63));
  form1.Image1.Canvas.Draw(0,0,bmp);
  bmp.Free();
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  loadLib('ndocr3.dll','normal','.','');
  stm := TMemoryStream.Create();
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  freeLib('');
  stm.Free();
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  form1.Close();
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -