我想写个自动登录百度的软件,但是不知道哪里错了高不来
  我代码贴下你们帮我看
  procedure TForm1.Button1Click(Sender: TObject);
var
Doc:IHTMLDocument2;
input,o:OleVariant;
userinputelement,pwdinputelement:ihtmlinputelement;
begin
doc:=webbrowser1.document as ihtmldocument2;
userinputelement:=(doc.all.item('Username',0) as ihtmlinputelement);
userinputelement.value:=edit1.text;
pwdinputelement:=(doc.all.item('password',0) as ihtmlinputelement);
pwdinputelement.value:=edit2.text;
input:=doc.all.item(' 登录 ',0);
input.click;
end;-------------------------------------------------------------------<TD class=f14 width=50>用户名:</TD>
    <TD width=156><INPUT class=ip id=username 
      onchange="chechUserOld('username')" name=username></TD></TR>
  <TR id=trPassNorm style="DISPLAY: none">
    <TD class=f14 vAlign=top width=50>密 码:</TD>
    <TD width=156><INPUT class=ip id=normModPsp type=password></TD></TR>
  <TR id=trPassSafe style="DISPLAY: none">
    <TD class=f14 vAlign=top width=50>密 码:</TD>
<TD><input type=submit value=" 登录 ">      &nbsp;&nbsp;<A 
      href="https://passport.baidu.com/?getpass">忘记密码?</A></TD>
  </TR></FORM></TBODY></TABLE>

解决方案 »

  1.   


    procedure TForm13.Button1Click(Sender: TObject);
    var
      FHTTP:TIdHTTP;
      PostStream:TStringList;
      ResultStream:TStringStream;
      ResultStream1:TStringStream;
    begin
      FHTTP:=TIdHTTP.Create(nil);
      FHTTP.AllowCookies:=True;
      FHTTP.HandleRedirects:=True;
      PostStream:=TStringList.Create;
      ResultStream:=TStringStream.Create('');
      ResultStream1:=TStringStream.Create('');
      try
        PostStream.Add('tpl_ok=');
        PostStream.Add('next_target=');
        PostStream.Add('tpl=mn');
        PostStream.Add('skip_ok=');
        PostStream.Add('aid=');
        PostStream.Add('need_pay=');
        PostStream.Add('need_coin=');
        PostStream.Add('pay_method=');
        PostStream.Add('u=./');
        PostStream.Add('return_method=get');
        PostStream.Add('more_param=');
        PostStream.Add('return_type=');
        PostStream.Add('psp_tt=0');
        PostStream.Add('password=百度用户名');
        PostStream.Add('safeflg=0');
        PostStream.Add('username=密码');
        PostStream.Add('verifycode=');
        FHTTP.Get('http://passport.baidu.com/?login&tpl=mn');
        FHTTP.Post('http://passport.baidu.com/?login',PostStream,ResultStream);
        FHTTP.Get('http://passport.baidu.com/',ResultStream1);
        Memo1.Text:=ResultStream1.DataString;
      finally
        if FHTTP.Connected then FHTTP.Disconnect;
        if Assigned(FHTTP) then FreeAndNil(FHTTP);
        if Assigned(PostStream) then FreeAndNil(PostStream);
        if Assigned(ResultStream) then FreeAndNil(ResultStream);
        if Assigned(ResultStream1) then FreeAndNil(ResultStream1);
      end;
    end;哥们,已经帮你实现了,结贴散分吧,呵呵
      

  2.   

    用Webbrowser实现很简单的,而且方法至少3种。
      

  3.   

    用Webbrowser 能实现的可以告诉我吗?我想用用Webbrowser来实现 hidelphi 你知道的话代码贴下来,我会加分给你的!!!
      

  4.   

    晕倒,Webbrowser的速度,哪有我上面代码的速度快哦
      

  5.   

    我这边不行,我之前和你一样的方法试过的
    procedure TForm1.Button1Click(Sender: TObject);
    const   
          url   ='http://passport.baidu.com/?login';
    var
          param   :   TStringList;
    begin
          idhttp1.Request.SetHeaders;
           param   :=   TStringList.Create;
          param.add('tpl_ok=');
          param.add('next_target=');
          param.Add('tpl=tb');
          param.add('skip_ok=');
          param.add('aid=');
          param.Add('needpay=');
          param.add('need_coin=');
          param.add('pay_method=');
          param.Add('u=http://tieba.baidu.com/f&return_method=get&more_param=kw=XXX');
          param.Add('return_type=');
          param.add('psp_tt=0');
          param.add('username='+'nio23');
          param.add('password='+'2034842');
          param.add('mem_pass=1');
          idhttp1.HandleRedirects   :=   true;
          idhttp1.Request.Referer   :=   'http://tieba.baidu.com/f?kw=XXX';
          memo1.lines.add(idhttp1.post(url,param));
      

  6.   


    procedure TForm14.Button1Click(Sender: TObject);
    var
      Doc:IHTMLDocument2;
      input:IHTMLFormElement;
      userinputelement,pwdinputelement:IHTMLInputElement;
    begin
      WebBrowser1.Navigate('http://passport.baidu.com/?login&tpl=mn');
      while WebBrowser1.ReadyState<>4 do
        Application.ProcessMessages;
      Doc:=WebBrowser1.Document as IHTMLDocument2;
      userinputelement:=(Doc.all.item('username',varEmpty) as IHTMLInputElement);
      userinputelement.value:='用户名';
      pwdinputelement:=(Doc.all.item('normModPsp',varEmpty) as IHTMLInputElement);
      pwdinputelement.value:='密码';
      Doc.parentWindow.execScript('checkForm(this);','JavaScript');
      input:=Doc.forms.item(0,varEmpty) as IHTMLFormElement;
      if input<>nil then input.submit;
    end;
      

  7.   

    哥们,不要一句话否定别人的劳动成功,上面的Indy Post代码在
    Delphi2007+Indy10调试环境中,测试通过!!!我已经用WebBrowser给你搞定了,记得散分!!!
      

  8.   

    OK.这个可以搞定,可以留下你的QQ吗?我有东西让你做,可以出现金!