我也遇到该问题,直到现在还没解决,再次关注!!!!  [email protected]

解决方案 »

  1.   

    来自DFW:
    大家在执行TWebBrowser的某个方法以进行期望的操作,如ExecWB等的时候可能都碰到过"试图激活未注册的丢失目标"或"OLE对象未注册"等错误,或者并没有出错但是得不到希望的结果,比如不能将选中的网页内容复制到剪贴板等。以前用它编程的时候,我发现ExecWB有时侯起作用但有时侯又不行,在Delphi生成的缺省工程主窗口上加入TWebBrowser,运行时并不会出现"OLE对象未注册"的错误。同样是一个偶然的机会,我才知道OLE对象需要初始化和终止化(懂得的东东实在太少了)。
      我用我的前一篇文章《Delphi程序窗口动画&正常排列平铺的解决》所说的方法编程,运行时出了上面所说的错误,我便猜想应该有OleInitialize之类的语句,于是,找到并加上了下面几句话,终于搞定!究其原因,我想大概是由于TWebBrowser是一个嵌入的OLE对象而不算是用Delphi编写的VCL吧。
    initialization
       OleInitialize(nil);
      finalization
       try
        OleUninitialize;
       except
       end;  这几句话放在主窗口所有语句之后,"end."之前。
    "查找"功能  查找对话框可以在文档获得焦点的时候通过按键Ctrl-F来调出,程序中则调用IOleCommandTarget对象的成员函数Exec执行OLECMDID_FIND操作来调用,下面给出的方法是如何在程序中用代码来做出文字选择,即你可以自己设计查找对话框。   var
        Doc: IHtmlDocument2;
        TxtRange: IHtmlTxtRange;
       begin
        Doc :=WebBrowser1.Document as IHtmlDocument2;
        Doc.SelectAll;    //此处为简写,选择全部文档的方法请参见第三条命令操作
                    //这句话尤为重要,因为IHtmlTxtRange对象的方法能够操作的前提是
                    //Document已经有一个文字选择区域。由于接着执行下面的语句,所以不会
                    //看到文档全选的过程。 
        TxtRange :=Doc.Selection.CreateRange as IHtmlTxtRange;
        TxtRange.FindText('Text to be searched',0.0);
        TxtRange.Select;
       end;  还有,从Txt.Get_text可以得到当前选中的文字内容,某些时候是有用的。还有复制,必须在调用ExecWB之前选定文字!否则出现错误。//P.S:上面的东西,在我主页的Delphi猛料包里面都有的。http://kingron.myetang.com
      

  2.   

    对不起,我是新手,懂的实在太少。
    所有这些:
    initialization
       OleInitialize(nil);
      finalization
       try
        OleUninitialize;
       except
       end;
    是加在最后的“end.”之前吗?
      

  3.   

    winapi:请问可以在线程中调用webbrowser吗?
      

  4.   

    出错“试图激活未注册的丢弃目标”,可用Try将它封装掉,我就是这样做的。