📄 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.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -