本帖最后由 yedixifeng 于 2012-01-09 09:32:04 编辑

解决方案 »

  1.   

    要保证Webbrowser1加载完,在加载另一个,否则会冲突
      

  2.   

    为什么不用定时器啊? Timer??
    然后用 Gettickcount 来计时?另外你 
    Button1Click(Sender);
     sleep(1000);
     Button2Click(Sender);改成  button1.click;  sleep(1000); application.proces****  ;  button2.click; 试试
      

  3.   

    上面的好像是 application.ProcessMessages ;  用了这个 就不会出现卡死的情况了。
      

  4.   

    谢谢楼上的朋友,改成这样还是不行啊procedure TForm1.Button1Click(Sender: TObject);
    begin
     Edit1.Text := 'http://192.168.1.100/admin/Item/Admin_ItemStart.asp';
     WebBrowser1.Navigate(Edit1.Text);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
     Webbrowser1.OleObject.Document.all.item('StartMe').Click;//提交表单
     sleep(20000);
     Button3Click(Sender);
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
     Button1.click;
     sleep(20000);
     while webbrowser1.ReadyState <>READYSTATE_COMPLETE do
     Application.ProcessMessages;
     Button2.click;
    end;
      

  5.   

    没有必要做成3个按钮,直接在循环里,看起来更清晰
    要在加载完之后再提交,应该是在Navigate之后sleep,为了保证提交成功,应该也sleep几秒
      

  6.   

    我以前是这样作的,只一个按钮,按钮中只提交Navigate(),然后在WebBrowser1的完成事件中判断,并写提交代码,当然也可以在完成事件中重复.
      

  7.   

    卡死的情况你要这样子。for i := 1 to 100 do begin
      sleep(200);
      application.ProcessMessages;
    end;
      

  8.   

    e8923704,用你这方法也还是卡死procedure TForm1.Button3Click(Sender: TObject);
    var
        i:Integer;
    begin
     Button1.click;
         for   i:=   1   to   100   do
         begin
            sleep(10000);
            application.processmessages;
        end;
    // sleep(20000);
    // while webbrowser1.ReadyState <>READYSTATE_COMPLETE do
    // Application.ProcessMessages;
     Button2.click;
    end;
      

  9.   

    benke520,用timer应该如何写呢?
    kiboisme,用第三个按钮主要好定时,呵呵