基本信息
源码名称: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.