基本信息
源码名称:12306抢票软件Delphi源码版
源码大小:0.95M
文件格式:.rar
开发语言:Pascal
更新时间:2019-12-28
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
此实例已过期,可参考其 订票思路
此实例已过期,可参考其 订票思路
unit frmMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw_EWB, EwbCore, EmbeddedWB, mshtml,
frmContent, unit3,
U_Web, Menus, ExtCtrls, Buttons,U_Info;
type
TForm1 = class(TForm)
EmbeddedWB1: TEmbeddedWB;
Timer1: TTimer;
MainMenu1: TMainMenu;
ools1: TMenuItem;
NagivateInfo1: TMenuItem;
Executecommand1: TMenuItem;
Connect123061: TMenuItem;
C1: TMenuItem;
N1: TMenuItem;
Config1: TMenuItem;
Timer2: TTimer;
procedure EmbeddedWB1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
procedure EmbeddedWB1BeforeNavigate2(ASender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
procedure Timer1Timer(Sender: TObject);
procedure Executecommand1Click(Sender: TObject);
procedure Connect123061Click(Sender: TObject);
procedure C1Click(Sender: TObject);
procedure NagivateInfo1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Config1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
fristRun:boolean;
procedure saveLog(w:ansistring);
public
{ Public declarations }
web:U_Web.TWeb;
procedure myProcess;
procedure doMyJob(cmd:ansiString);
procedure doMyJob1(cmd:ansiString);
function getIDValue(Name:ansiString):ansiString;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
unit4;
procedure TForm1.C1Click(Sender: TObject);
begin
if(web<>nil) then web.Free;
web:=U_Web.TWeb_ChaXun.Create;
self.EmbeddedWB1.Navigate(web.URL);
while EmbeddedWB1.Busy do application.ProcessMessages;
end;
procedure TForm1.Config1Click(Sender: TObject);
begin
frmContent.Form2.Show;
end;
procedure TForm1.Connect123061Click(Sender: TObject);
begin
if(web<>nil) then web.Free;
web:=U_Web.TWeb_Login.Create;
self.EmbeddedWB1.Navigate(web.URL);
while EmbeddedWB1.Busy do application.ProcessMessages;
end;
procedure TForm1.doMyJob(cmd: ansiString);
begin
if(cmd='01') then
begin
if(not frmContent.Form2.Showing) then
frmContent.Form2.Show;
exit;
end;
if(cmd='03') then
begin
frmContent.Form2.Edit1.Text:=self.getIDValue('UserName');
frmContent.Form2.Edit2.Text:=self.getIDValue('password');
frmContent.Form2.saveData;
if(not frmContent.Form2.Showing) then
frmContent.Form2.Show;
exit;
end;
end;
procedure TForm1.doMyJob1(cmd: ansiString);
begin
cmd:=trim(cmd);
frmContent.Form2.Edit1.Text:=cmd;
if(not frmContent.Form2.Showing) then
frmContent.Form2.Show;
end;
procedure TForm1.EmbeddedWB1BeforeNavigate2(ASender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
var
myURL,cmdA,cmdB:ansistring;
i:integer;
begin
myURL:=trim(lowercase(URL));
if(pos('t20110529_1905.jsp',URL)>0) then
begin
Cancel:=true;
exit;
end;
if(pos('about:blank',URL)>0) then
begin
Cancel:=true;
exit;
end;
if(pos('syant',myURL)>0) then
begin
myURL:=copy(myURL,length(myURL)-7,8);
cmdA:=copy(myURL,1,5);
cmdB:=copy(myURL,7,2);
if(cmdA='syant') then
begin
doMyJob(cmdB);
Cancel:=true;
exit;
end;
end;
{
//当Login 成功后
//if(myURL='https://dynamic.12306.cn/otsweb/loginAction.do?method=login') then
if(pos('method=login',myURL)>0) then
begin
//登陆成功时;
if(self.web<>nil) then self.web.Free;
self.web :=TWeb_AfterLogin.Create ;
end;
//当真正调入到定票界面时;
//https://dynamic.12306.cn/otsweb/order/querysingleaction.do?method=init
if(pos('querysingleaction.do?method=init',myURL)>0) then
begin
//登陆成功时;
if(self.web<>nil) then self.web.Free;
self.web :=TWeb_AfterLogin.Create ;
end;
if(pos('querysingleaction.do?method=init',myURL)>0) then
begin
//进入选票;
if(self.web<>nil) then self.web.Free;
self.web :=TWeb_XuanPiao.Create ;
end; }
end;
procedure TForm1.EmbeddedWB1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
syant:=EmbeddedWB1.Document as ihtmldocument2;
if not Assigned(syant) then Exit;
wangjun:=syant.parentWindow;
if not Assigned(wangjun) then Exit;
//what the page is ? what I will do ?
//self.myProcess ;
timer1.Enabled:=true;
end;
procedure TForm1.Executecommand1Click(Sender: TObject);
begin
if(not unit4.Form4.Showing) then
unit4.Form4.Show;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
fristRun:=true;
INFO:=TInfo.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
INFO.Free;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
self.Timer1.Enabled:=true;
end;
function TForm1.getIDValue(Name: ansiString): ansiString;
var
sy: ihtmlinputelement ;
begin
result:='';
try
if syant1=nil then exit;
sy:=(syant1.all.item(Name,0) as ihtmlinputelement);
result:=sy.value;
sy:=nil;
except
end;
end;
procedure TForm1.myProcess;
var
i,j:integer;
iknow:boolean;
frm:IWebbrowser2;
ole_index: OleVariant;
frame_dispatch: IDispatch;
framedoc:ihtmldocument2;
myurl:string;
begin
self.saveLog('syant.title=' syant.title);
if(self.web<>nil) then
begin
self.web.Free;
self.web:=nil;
end;
i:=0;
//j:=self.EmbeddedWB1.FrameCount;
J:=syant.frames.length;
iknow:=false;
syant1:=nil; //default : no frame;
wangjun1:=nil;
while(i<j) do
begin
ole_index := i;
try
frame_dispatch := syant.frames.item(ole_index);
if (frame_dispatch <> nil)then
begin
framedoc := (frame_dispatch as IHTMLWindow2).document;
self.saveLog('Title:' framedoc.title);
self.saveLog('src:' framedoc.url);
if(framedoc.title='登录') then
begin
iKnow:=true;
syant1:= framedoc;
if Assigned(syant1) then wangjun1:=syant1.parentWindow;
self.web:=TWeb_Login.Create ;
break;
end;
if(framedoc.title='系统消息') then
begin
iKnow:=true;
syant1:= framedoc;
syant1:= framedoc;
if Assigned(syant1) then wangjun1:=syant1.parentWindow;
self.web:=TWeb_AfterLogin.Create ;
break;
end;
if(framedoc.title='车票预订') then
begin
iKnow:=true;
syant1:= framedoc;
syant1:= framedoc;
if Assigned(syant1) then wangjun1:=syant1.parentWindow;
myUrl:=framedoc.url;
myUrl:=lowercase(myUrl);
if(pos('confirmpassengeraction.do',myUrl)>0) then
self.web:=Tweb_confirmPiao.Create
else
self.web:=TWeb_XuanPiao.Create ;
break;
end;
end;
except
// do noting;
end;
i:=i 1;
{ frm:=self.EmbeddedWB1.GetFrame(i);
self.saveLog('LocationName=' frm.LocationName);
self.saveLog('LocationURL=' frm.LocationURL); }
end;
if(not iKnow) then
begin
self.web :=TWeb_UnKnow.Create ;
self.saveLog('=======UNKNOW');
end else
begin
end;
//
self.web.process;
end;
procedure TForm1.NagivateInfo1Click(Sender: TObject);
begin
unit3.Form3.ShowModal;
end;
procedure TForm1.saveLog(w: ansistring);
begin
unit3.Form3.Memo1.Lines.Add(w);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
SELF.Timer1.Enabled :=false;
if(fristRun) then
begin
fristRun:=false;
Connect123061Click(Self);
exit;
end;
SELF.myProcess;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
application.ProcessMessages;
//click1;
//click2;
end;
end.