http://passport.baidu.com/?login&tpl=mn
这个是百度登陆的页面
我想做个小软件登陆百度知道

解决方案 »

  1.   


    你的分有些少。
    登录百度有多种方法,至少五种!而且不一定要用IDHTTP
      

  2.   


    怎么可以增加分数啊?
    我也想给出我全部的分啊
    哪个帮忙解决我分数全部都给他
    我想用IDHTTP解决
      

  3.   

    EASY..
    获得编辑框的name属性和按钮的name属性
    自动填写+自动点击登录按钮
      

  4.   

    好像现在百度还有狗什么的用idhttp打不开了
      

  5.   

    给你个代码:你看看这个是自动填写网页的
    procedure   TForm1.Button2Click(Sender:   TObject);   
        
      var   
        
            o   :   Olevariant;   
        
      begin   
        
        
          o   :=   WebBrowser1.OleObject.document.all.item('T1',0);   
        
          o.value   :=   'T1';   
        
          o   :=   WebBrowser1.oleobject.document.all.item('T2',0);   
        
          o.value   :=   'T2';   
        
        
      end;   
        
      

  6.   

    百度里可以这样,注意不要用idhttp
    procedure TForm1.Button1Click(Sender: TObject);
    var
    o:OleVariant;
    begin
    WebBrowser1.Navigate('http://www.baidu.com',O);
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      o:Olevariant;
    begin
      o:=WebBrowser1.OleObject.document.all.item('wd',0);
      o.value:='你好,百度';
    end;
      

  7.   

    这个是点一下百度那个按钮的,不过要注意包含MSHTML_TLB这个单元,D7里可以,D6不知道是那个单元了
    procedure TForm1.Button3Click(Sender: TObject);
    begin
    (Self.WebBrowser1.Document as IHTMLDocument3).getElementById('sb').click;
    end;
      

  8.   

    才看到楼主是要用这个http://passport.baidu.com/?login&tpl=mn 
    这个网址的,修改一下
    procedure TForm1.Button1Click(Sender: TObject);
    var
    o:OleVariant;
    begin
    WebBrowser1.Navigate('http://passport.baidu.com/?login&tpl=mn',O);
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      o:Olevariant;
    begin
      o:=WebBrowser1.OleObject.document.all.item('username',0);
      o.value:='username';
      (Self.WebBrowser1.Document as IHTMLDocument3).getElementById('normModPsp').innerText:='123456';
    end;
      

  9.   

    [Fatal Error] Unit1.pas(7): File not found: 'MSHTML_TLB.dcu'
    找不到
      

  10.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, OleCtrls, SHDocVw, StdCtrls,MSHTML;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        WebBrowser1: TWebBrowser;
        Button3: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
     var 
    o:OleVariant;
    begin
     WebBrowser1.Navigate('http://passport.baidu.com/?login&tpl=mn',O); 
    end;procedure TForm1.Button2Click(Sender: TObject);
     var 
      o:Olevariant;
    begin
      o:=WebBrowser1.OleObject.document.all.item('username',0); 
      o.value:='username';
      (Self.WebBrowser1.Document as IHTMLDocument3).getElementById('normModPsp').innerText:='123456';
      
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
     (Self.WebBrowser1.Document as IHTMLDocument3).getElementById('sb').click;
    end;end.
    按钮1和2功能正常,模拟按下登录按钮报错!
      

  11.   

    D版本问题,把'MSHTML_TLB换成mshtml就可以了
      

  12.   


    procedure TForm1.Button3Click(Sender: TObject); 
    begin 
    (Self.WebBrowser1.Document as IHTMLDocument3).getElementById('sb').click; 
    end; 
    模拟按下登录按钮报错!
      

  13.   

    这是D6下的所有原代码,你自己看吧,另外楼上的,这是你的贴的吗,问了这么多问题,另开贴给我分呀,   玩笑话,别当真
    这是整个单元文件
    你看看吧
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs,mshtml, OleCtrls, SHDocVw, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        WebBrowser1: TWebBrowser;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
    o:OleVariant;
    begin
    WebBrowser1.Navigate('http://www.baidu.com',O);
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      o:Olevariant;
    begin
      o:=WebBrowser1.OleObject.document.all.item('wd',0);
      o.value:='你好,百度';  //这个是填写那个输入框的
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin   //这个是按那个按钮的
    (Self.WebBrowser1.Document as IHTMLDocument3).getElementById('sb').click;
    end;end.
      

  14.   

    小和的方法可以。缺点是必须在网页打开后才能实现登录。我有更好的方法,可以实现一打开网页就处于登录状态,不需要判断网页是否已打开。加分方法是单击本贴上面的“贴子加分”。当然你不加分我也可以给你答案,只是我觉得有些不爽而已。你QQ多少?我把代码发给你!
    这是我以前写的一个126信箱登录例子。不需要填表单,直接打开网页就处于登录状态:
    http://www.mwymwy.cn/126.exe
      

  15.   


    这个方法还好实现吧
    就是登陆的那个按钮没有NAME
    不然很容易实现的
      

  16.   

    测试通过不了
    登录按钮没有name或者id
    所以没有办法点击
      

  17.   

    我还有点没有看明白
    那个'sb'是什么啊?
    登陆的按钮根本就没有name或者id
    我不知道你的'sb'怎么出来的
      

  18.   

    楼主看清后再说,这个才是你那个登陆用的
    procedure TForm1.Button1Click(Sender: TObject); 
    var 
    o:OleVariant; 
    begin 
    WebBrowser1.Navigate('http://passport.baidu.com/?login&tpl=mn',O); 
    end; procedure TForm1.Button2Click(Sender: TObject); 
    var 
      o:Olevariant; 
    begin 
      o:=WebBrowser1.OleObject.document.all.item('username',0); 
      o.value:='username'; 
      (Self.WebBrowser1.Document as IHTMLDocument3).getElementById('normModPsp').innerText:='123456'; 
    end; 
    关于点那个登陆按钮的问题,可以通过value获得该页面元素的
      

  19.   


    To:mwy654321()
       可否把<D7+126信箱登录例子,不需要填表单,直接打开网页就处于登录状态>demo发给小弟study下?
        Email:[email protected]
      

  20.   

    这个要用到idhttp的post方法,具体他的参数如何,关键是看参数如何做了
      

  21.   


    是的哦
    两个EDIT,分别是用户名和密码
    再点击一下登陆就可以了啊!
      

  22.   

    两个EDIT,分别是用户名和密码 
    恐怕要用到ini保存密码和用户名,这样下次就不用再输入了.不过,要把ini放在一个好地方,要不,别人就知道你密码了
    关注此帖.
      

  23.   

    uses shellapiShellExecute(Handle,'open',Pchar('https://passport.baidu.com/?login&username=我也爱分&password=123321'),nil,nil,SW_SHOW);
      

  24.   

    百度用的协议是 https
    和常规的方法不一样
      

  25.   

    我也有这个问题(虽然这是两个月前的帖子了),发表一下意见:
    我用D7用如下代码可以实现:procedure TMain.loginClick(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='+id.text);
          param.add('password='+pass.text);
          param.add('mem_pass=1');
          idhttp1.HandleRedirects   :=   true;
          idhttp1.Request.Referer   :=   'http://tieba.baidu.com/f?kw=XXX';
          idhttp1.post(url,param);使用D2005使用同种方法提示需要验证码。
    我采用的方法和37楼有异曲同工之处,使用idhttp的get方法完成登录。记得我两年前用VB的类似方法实现过。
    memo1.Text := idhttp1.get('http://passport.baidu.com/?login&username=XXXX&password=XXXXXX');