www.pudn.com > POLL_SRC.rar > Main.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.