我用WebBrowser控制网页中的对象,像你说的两种方法:
有两种写法:1:
Uses MSHTML     //IHTMLDocument2,IHTMLInputElement,IHTMLFormElement等在其中定义,必须加上该单元!var
  Doc:IHTMLDocument2;
  Input:IHTMLInputElement;
  Form:IHTMLFormElement;
begin
Doc:=Webbrowser1.Document as IHTMLDocument2;
Input:= Doc.all.item('name',0) as IHTMLInputElement;
            //或者Input:= IHTMLDocument2(Webbrowser1.Document).all.item('name',0) as IHTMLInputElement;
Input.value:='Test';
Input:= Doc.all.item('pass',0) as IHTMLInputElement;
           //或者Input:= IHTMLDocument2(Webbrowser1.Document).all.item('name',0) as IHTMLInputElement;
Input.value:='123456';
Form:= Doc.all.item('alogon',0) as IHTMLFormElement;
Form.submit;
end;2:
With WebBrowser1.OleObject.document do
begin 
  all.item('name').value:='Test';
  all.item('pass').value:='123456;
  forms.item('alogon').submit;
end;可是在没有Frame的情况下没问题(再次表示感谢!)。可拿到有Frame的页面里就不行了,我应该怎么改上面的那些代码呢?我要控制的对象在Frame:<frame src="output.htm" name="send">里。也就是说要控制的对象在“output.htm”里。我该怎么把Frame加到上面的代码里呢?救救我呀!

解决方案 »

  1.   

    前段时间在考试,网上的比较少!var
      doc:IHTMLDocument2;
      win:IHTMLWindow2;
      framesCollection:IHTMLFramesCollection2;
      input:IHTMLInputElement;
      vFrame,ret:OleVariant;
    begin
      doc:=WebBrowser1.Document as IHTMLDocument2;
      framesCollection:=(doc.get_frames as IHTMLFramesCollection2);
      TVariantArg(vFrame).vt:=VT_UINT;
      TVariantArg(vFrame).iVal:=0;
      ret:=framesCollection.item(vFrame);
      TVariantArg(ret).pdispVal.QueryInterface(IID_IHTMLWindow2,win);
      input:=((win.document as IHTMLDocument2).all.item('name',0) as IHTMLInputElement);
      input.value:='Test';
    end;
      

  2.   

    http://www.bytesandmore.de/rad/cpp/files/TCppWebBrowserSrc.zip
    http://www.bytesandmore.de/rad/cpp/files/TCppWebBrowserExe.zip
      

  3.   

    不行呀,我说一下要控制的htm文件的相关代码吧
    1、index.htm  <frameset rows="161,*" cols="*" framespacing="0" frameborder="NO" border="0">
      <frame src="top.htm" name="topFrame" scrolling="NO" noresize >
      <frame src="book.htm" name="13">
    </frameset>===================2、book.htm  :<form action="book.cgi" method="POST" name="allsay" id="allsay">
      <p align="center"><font color="#0000FF"><a name="添加留言">添加留言</a>:</font></p>
      <p align="center">您的姓名: 
        <input type="text" name="name" size="50">
        <br>
        电子邮件: 
        <input type="text" name="email" size="50">
        <br>
        标题: 
        <input type="text" name="saysword" size="50">
        <br>
        <p align="center">您的留言:<br>
        <textarea name="comments" COLS="60" ROWS="5"></textarea>
      </p>
      <p align="center">
        <input type="submit" value="添加留言">
        * 
        <input type="reset">
      </p>
    </form>===============================比如说我用webbrowser打开index.htm ,然后在给book.htm里的saysword赋值为“hello”,然后再把form给submit一下。现在我可以submit form,代码如下:
    webbrowser1.oleobject.document.frames.item('13').Document.forms.item('allsay').submit;可是却不知道怎么给sayword赋值,试了好几种办法都不行给sayword赋值得代码应该怎么写呢?
      

  4.   

    http://www.bytesandmore.de/rad/cpp/files/TCppWebBrowserSrc.zip
    http://www.bytesandmore.de/rad/cpp/files/TCppWebBrowserExe.zip
    把这例子下回去看看