在网上看到这样一篇文章
在自己的程序中使用过WebBrowser控件的朋友都知道,WebBrowser控件定义了诸如
BeforeNavigate、DownloadComplete 等事件,我们可以通过编写事件处理代码实现对WebBrowser
控件的操作。那么如何实现对IE的事件响应和处理呢?同建立IE面板一样。我们需要建立一个实
现IObjectWithSite接口的COM组件,不同的是,我们还需要实现IDispatch接口,在
IObjectWithSite接口的SetSite方法中获得IE的WebBrowser接口并建立自身与WebBrowser的连
接,然后如果在IE的Webbrowser对象中发生什么事件的话,那么IE就会回调连接的IDispatch接口
的Invoke方法。我们通过在Invoke方法中编写代码就可以获得IE事件了。这个利用的是COM编程的
回调接口原理。 
下面我们首先来实现代码。点击Delphi菜单 File | New 。在 ActiveX 页面中选择Active 
Library ,然后点击 OK 按钮。然后用同样的方法建立一个COM Object。在COM Object Wizard 
窗口中,将复选框 Included type library 去掉。然后在Class Name中输入IEHelper,在
Implemented Interface 中输入:IDispatch;IObjectwithSite 。然后点击 OK 按钮建立一个
COM组件。 
保存工程,将工程保存为IEHelper.dpr,将Unit1保存为IEHelperUnit.pas。下面是
IEHelperUnit.pas的具体代码: 但是在实际操作过程中发现问题,当我在COM Object Wizard窗口中,把复选框Include type library 去掉后,Implemented Interface 输入框就会变成灰色,不能输入上面文章指的东西了.请做过的朋友帮帮忙,谢谢了

解决方案 »

  1.   

    网上不是有例子可以下载的么?
    Google找找看了http://lysoft.7u7.net
      

  2.   

    应该是将Mark interface Oleautomation和Included type library 去掉
    然后在代码中手工将TIEHelper = class(TComObject)改成:
    TIEHelper = class(TComObject, IDispatch, IObjectWithSite)
      

  3.   

    这个文章:
    http://blog.csdn.net/technofantasy/archive/2001/04/16/2955.aspx
    是原来我在D5下面写的,应该是可以的,刚才我在D7下面做了一下,果然出现楼主的情况,楼主还是按照文章里面的代码手工创建TIEHelper 类吧。
      

  4.   

    TechnoFantasy(冰儿马甲www.applevb.com)
    版主,不行啊,我按照你说的那种方法重新做
    当把Include type library 去掉后Mark interface Oleautomation就变成灰色的了,然后新建IEHelperUnit.pas文件后,我把你的那段代码代进去后,错误一大堆.
    我记得我半年前也是看你的贴子做了一个例子,应该是用D6做的,现在一点都想不起来操作过程了,以前做的那个例子很简单,现在还用着,但是只是Dll能用,把源程序用D7编译后,好像没有改什么东西,就是新编译后的Dll文件怎么也不起作用了.用D7能编译,但拿到D6下就编译不过去.
    请版主再帮帮忙.