在好例子网,分享、交流、成长!
您当前所在位置:首页Pascal 开发实例Delphi网络编程 → 12306抢票软件Delphi源码版

12306抢票软件Delphi源码版

Delphi网络编程

下载此实例
  • 开发语言:Pascal
  • 实例大小:0.95M
  • 下载次数:56
  • 浏览次数:561
  • 发布时间:2019-12-28
  • 实例类别:Delphi网络编程
  • 发 布 人:女生宿舍卖黄瓜
  • 文件格式:.rar
  • 所需积分:2
 相关标签: delphi 12306 源码

实例介绍

【实例简介】此实例已过期,可参考其 订票思路

【实例截图】

【核心代码】


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.


标签: delphi 12306 源码

实例下载地址

12306抢票软件Delphi源码版

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警