网页例子:http://guba.eastmoney.com/gssz,guba.html
用代码在留言标题和留言框中填入内容,比如标题填“111”,内容填“222”,然后提交。 
现在我用 mainfm.mainwb.OleObject.document.getElementById('topic').value:='111' 
可以在留言标题中填入内容,但同样的方法对留言内容框不起作用。
不知道是不是因为网页中frame的原因??
请大家帮忙看看!!!csdn里我搜索了一遍,好像没有帖子能实现我想要的。

解决方案 »

  1.   

    <iframe class="oblog_Composition" ID="oblog_Composition" MARGINHEIGHT="5" MARGINWIDTH="5" width="100%" height="100%"></iframe>
    这个IFRAME的ID是:oblog_Composition通过IFrame,可以这样访问:  IFrameID.Document.GetElementByID('IFRAME里面的那个输入框的ID').Value := 'xxxxx...';js文件太多,懒得找.
      

  2.   

    mainfm.mainwb.OleObject.document.getElementById('oblog_Composition').contentWindow.document.body.innerHTML:='222';
      

  3.   

      参考代码一:   
        
      uses   mshtml;   
      procedure   TMainForm.ToolButton56Click(Sender:   TObject);   
      var   
          Index:             Integer;   
          Document:       IHTMLDocument2;   
          FrameIdx:       OleVariant;   
          FrameDis:       IDispatch;   
          FrameWin:       IHTMLWindow2;   
      begin   
          while   Webbrowser1.ReadyState   <>   READYSTATE_COMPLETE   do   
              Application.ProcessMessages;   
        
          if   WebBrowser1.Document   =   nil   then   Exit;   
          if   WebBrowser1.Document.QueryInterface(IHTMLDocument2,   Document)   <>   0   then   Exit;   
          if   Document.frames.length   >   0   then   
          begin   
              for   Index   :=   0   to   Document.frames.length   -   1   do   
              begin   
                  FrameIdx   :=   Index;   
                  FrameDis   :=   Document.frames.item(FrameIdx);   
                  if   FrameDis.QueryInterface(IHTMLWindow2,   FrameWin)   <>   0   then   Exit;   
                  ShowMessage(FrameWin.document.body.outerHTML);       
                  //FrameWin.document   就是你要的每个   Frame   的文档   
              end;   
          end;   
      end;  
      

  4.   

    谢谢suton 和 ideation_shang 两位兄弟!
    现在可以给文本框填入内容了
    但现在又有了一个新问题,帖子发送成功以后,会弹出一个成功提示框,需要点一下鼠标或者给提示框传递一个回车键才可以关掉提示框。该怎么用软件实现呢???
      

  5.   

    各位高手,再帮忙看看
    现在往标题和文本框输入内容都可以了,可问题出现在提交上面,多数时候第一次提交都不能成功,第二次才可以,有时第二次都不行,不知道是否跟发帖延时有关系。
    我是用:mainfm.mainwb.OleObject.document.parentWindow.execScript('VerifySubmit()','JavaScript'); 进行提交的。
    在IE里试了一下,点击“发表帖子”的提交成功率要很多,但“发表帖子”是一个图片,没有id和name,参看了一些网上的代码也不知道如何定位这个元素并且模拟点击。
    图片相关的html代码:<a href="javascript:VerifySubmit()" target="_self"><img src="image/060804_zb_anniu_32.gif" border="0"></a>
      

  6.   

    procedure TForm1.Button6Click(Sender: TObject);
    var
     vDoc: IHTMLDocument2;
     vMen: IHTMLElement;
     vImg: IHTMLImgElement;
     i: Integer;
     LinkElement :IHTMLLinkElement ;
      item:OleVariant;
    begin vDoc := WebBrowser1.Document as IHTMLDocument2; if Assigned(vDoc) then
     begin
       for i := 0 to vDoc.all.length - 1 do 
       begin
         vMen := vDoc.all.item(i, i) as IHTMLElement;     if vMen.tagName='A' then
          begin         item := vDoc.all.item(i, i);         if pos('VerifySubmit',item.href)>0  then
             begin
                vMen.click ;
             end;       end;   end; end;
    end;
      

  7.   

        for i:=0 to mainfm.mainwb.OleObject.Document.Images.Length-1 do
        begin
          Document:=mainfm.mainwb.Document as IHtmlDocument2;
          Str:=(Document.Images.Item(i,0) as IHTMLImgElement).Href;
          if Pos('060804_zb_anniu_32.gif', str) <> 0 then
            ((Document.Images.Item(i, 0) as IHTMLImgElement) as IHTMLElement).Click;
        end;我用上面的代码可以模拟点击提交图片了,现在就剩下最后一个问题,就是如何点击提交之后的成功消息框?
    我试过用 keybd_event(13,0,0,0); 发送回车键,但回车键被程序主窗口的按钮接收了,反而造成了连续两次发帖。
    该如何关掉发帖之后的成功消息框?