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

📄 main.pas

📁 用delphi 编写的 验证码识别程序
💻 PAS
字号:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  AdvOcr, Post, Define, ShellApi, ExtCtrls, Menus, CoolTrayIcon, StdCtrls,
  ComCtrls,
  Dialogs, AppEvnts;

type
  TfrmLyPoll = class(TForm)
    stat1: TStatusBar;
    cti: TCoolTrayIcon;
    pmti: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    tmrTick: TTimer;
    pnl1: TPanel;
    imgVerifyPic: TImage;
    lbl1: TLabel;
    lblSucc: TLabel;
    bvl1: TBevel;
    lbl2: TLabel;
    btnStart: TButton;
    btnPause: TButton;
    btnGoon: TButton;
    btnStop: TButton;
    edtCount: TEdit;
    lbl3: TLabel;
    pgc1: TPageControl;
    ts2: TTabSheet;
    lstLog: TListBox;
    ts1: TTabSheet;
    mmoResp: TMemo;
    pmLog: TPopupMenu;
    N3: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnStartClick(Sender: TObject);
    procedure btnPauseClick(Sender: TObject);
    procedure btnGoonClick(Sender: TObject);
    procedure btnStopClick(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure tmrTickTimer(Sender: TObject);
    procedure lbl3Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
  private
    Poll : TPollTask;
  public
    procedure SetBtnStat(Stat : TBtnStat);
    procedure ThreadDone(Sender : TObject);
  end;

var
  frmLyPoll: TfrmLyPoll;
  
  

implementation

{$R *.dfm}

uses
  HTTPutil;

procedure TfrmLyPoll.SetBtnStat(Stat : TBtnStat);
begin
  case Stat of
  bsNull:
    begin
      btnStart.Enabled := True;
      btnPause.Enabled := False;
      btnGoon.Enabled := False;
      btnStop.Enabled := False;
    end;
  bsRunning:
    begin
      btnStart.Enabled := False;
      btnPause.Enabled := True;
      btnGoon.Enabled := False;
      btnStop.Enabled := True;
    end;
  bsPaused:
    begin
      btnStart.Enabled := False;
      btnPause.Enabled := False;
      btnGoon.Enabled := True;
      btnStop.Enabled := True;
    end;
  end;
end;

procedure TfrmLyPoll.ThreadDone(Sender : TObject);
begin
  tmrTick.Enabled := False;
  TimeTick := 0;
  SetBtnStat(bsNull);
  Poll := nil;
end;

procedure TfrmLyPoll.FormCreate(Sender: TObject);
begin
  
  if not OcrInit then
  begin
    ShowMessage('您的系统还没有安装 flying99koo 验证码识别引擎!'+#13#13
               +'请到 flying99koo 的 BLOG 下载!');
    ShellExecute(Application.Handle, 'open', PChar(ENGINE_URL), nil, nil, SW_MAXIMIZE);
    Close;
    exit;
  end;
  Caption := PRODUCT_NAME + '         QQ:78273318';
  Application.Title := PRODUCT_NAME;
  RndSeed := GenRndUSR('VERIFY_PIC_','.JPG',5);
  if not DirectoryExists(ExtractFilePath(ParamStr(0))+IMG_CODE_PATH) then
  MkDir(ExtractFilePath(ParamStr(0))+IMG_CODE_PATH);
  SetBtnStat(bsNull);
  stat1.SimpleText := ' 准备就绪';
end;

procedure TfrmLyPoll.FormClose(Sender: TObject; var Action: TCloseAction);
var
  TmpFile : string;
begin
  OcrDone;
  TmpFile := ExtractFilePath(ParamStr(0))+IMG_CODE_PATH+RndSeed;
  if FileExists(TmpFile) then
  DeleteFile(TmpFile);
  TmpFile := ChangeFileExt(TmpFile,'.BMP');
  if FileExists(TmpFile) then
  DeleteFile(TmpFile);
end;

procedure TfrmLyPoll.btnStartClick(Sender: TObject);
begin
  if Poll <> nil then exit;
  SetBtnStat(bsRunning);
  TimeTick := 0;
  tmrTick.Enabled := True;
  Poll := TPollTask.Create;
  with Poll do
  begin
    OnTerminate := ThreadDone;
    _POLL_COUNT := StrToInt(edtCount.Text);
    _LOG_LST := lstLog;
    Resume;
  end;
end;

procedure TfrmLyPoll.btnPauseClick(Sender: TObject);
begin
  if Poll = nil then exit;
  tmrTick.Enabled := False;
  stat1.SimpleText := ' 已经暂停';
  SetBtnStat(bsPaused);
  Poll.Pause;
end;

procedure TfrmLyPoll.btnGoonClick(Sender: TObject);
begin
  if Poll = nil then exit;
  tmrTick.Enabled := True;
  SetBtnStat(bsRunning);
  Poll.Goon;
end;

procedure TfrmLyPoll.btnStopClick(Sender: TObject);
begin
  if Poll = nil then exit;
  SetBtnStat(bsNull);
  TimeTick := 0;
  tmrTick.Enabled := False;
  stat1.SimpleText := ' 准备就绪';
  Poll.Stop;
  Poll := nil;
end;

procedure TfrmLyPoll.N1Click(Sender: TObject);
begin
  cti.ShowMainForm;
end;

procedure TfrmLyPoll.N2Click(Sender: TObject);
begin
  btnStopClick(Sender);
  Close;
end;

procedure TfrmLyPoll.tmrTickTimer(Sender: TObject);
begin
  Inc(TimeTick);
  stat1.SimpleText := ' 耗时:' + IntToStr(TimeTick) + ' 秒';
end;

procedure TfrmLyPoll.lbl3Click(Sender: TObject);
begin
  ShellExecute(Application.Handle, 'open', 'http://www.flying99koo.com', nil, nil, SW_MAXIMIZE);
end;

procedure TfrmLyPoll.N3Click(Sender: TObject);
begin
  lstLog.Clear;
end;

end.

⌨️ 快捷键说明

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