打印本文 打印本文 关闭窗口 关闭窗口
报名机器人
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3692  更新时间:2009/4/23 18:34:21  文章录入:mintao  责任编辑:mintao
nbsp;

    else if  (stage >= 3)  then

    begin

        if (isRun) then

        begin

            TryAgain;

           stage := stage +1;

        end;

    end

end;

 

第一步后,会弹出一个对话框,确定后才进入第二步,因为只有一次,这里没有处理,由手工点击确定。

第二步比较简单,一个协议条款,直接模拟点击“同意”按钮,进入第三步。

第三步是关键步骤,因为报名信息都在这里填,并提交。首先用读入的XML中的数据填第二个表单,然后提交表单。并启动一个定时器,定时提交表单重复尝试报名。

表格 4

定时器重复报名:

procedure TfrmMain.Timer1Timer(Sender: TObject);

var

     doc: ihtmldocument2;

     placeSelect:IHTMLSelectElement;

     pwd1Input:IHTMLInputElement;

begin

   TryAgain;

  Application.ProcessMessages;

 

end;

每次报名希望重试不同的考点,以扩大选择的范围,因此重复时轮流用选择的几个考点报名:

表格 5

procedure TfrmMain.TryAgain;

var

     doc: ihtmldocument2;

     placeSelect:IHTMLSelectElement;

     pwd1Input:IHTMLInputElement;

 

     kk:hwnd;

begin

    if (webbrowser1.LocationURL = url3) then

    begin

        doc:=(WebBrowser1.Document as IHTMLDocument2);

        placeSelect := (doc.all.item(''''tp_cname'''',0) as IHTMLSelectElement) ;

        placeSelect.selectedIndex := placesID[(times mod placeNum) + 1]; //轮流换考点

 

        pwd1Input := (doc.all.item(''''pwd1'''',0) as IHTMLInputElement) ;

        pwd1Input.value := pwd;

 

        submitForm;

        times := times + 1;

        statusBar1.Panels[0].Text := ''''正在第'''' + inttostr(times) + ''''次报名。。。'''';

        Application.ProcessMessages;

 

    end

    else  //报名成功,报名成功,我也不知道成功是什么样子,只好根据页面地址判断

    begin

            timer1.Enabled := false;

            btnReg.Caption := ''''开始'''';

            isRun := false;

 

            statusBar1.Panels[0].Text := ''''报名已成功。。。'''';

            showmessage(''''报名成功!!!!!!!!!!!!'''');

    end;

end;

在重复报名中遇到一个问题:报名不成功会弹出一个对话框,然后页面阻塞在那里,无法进行下去。没有办法,只有再起一个进程,找到IE弹出的对话框,强行关掉。(其实关掉并不是最好的办法,如果能发送一个消息点击确定按钮最好,可惜没找到相关资料)。

表格 6

procedure TfrmMain.NewThread;

var

  hThread:Thandle;//定义一个句柄

  ThreadID:DWord;

上一页  [1] [2] [3] [4]  下一页

打印本文 打印本文 关闭窗口 关闭窗口