发布网友 发布时间:2024-02-06 14:24
共1个回答
热心网友 时间:2024-02-09 17:01
创建一个COM组件,这个组件需要实现IObjectWithSite接口。注册这个组件将这个组件的GUID注册到: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects 下,这样IE在启动时就可以装载这个组件,然后获得组件的IObjectWithSite接口并调用其功能。 实现方法如下:首先需要获得IObjectWithSite接口的定义,你可以从http://www.applevb.com/lib/tl_ole.zip 下载这个接口定义的tlb文件,这个压缩包中的olelib.tlb就包含了接口定义。然后创建一个ActiveX DLL工程,在工程中引用这个tlb文件,并且引用Microsoft HTML Object Library(MSHTML.DLL)和Microsoft Internet Controls(Shdocvw.dll)。 然后在工程的class1中写入如下代码: ‘Class1.bas Option Explicit ’ 实现IObjectWithSite接口来获得IE对象 Implements olelib.IObjectWithSite Private WithEvents m_objIE As InternetExplorer Private Sub IObjectWithSite_GetSite(riid As UUID, ppvSite As IUnknown) Dim objUnk As olelib.IUnknown ’获得m_objIE IUnkown接口 Set objUnk = m_objIE ’返回所需要的接口 objUnk.QueryInterface riid, ppvSite End Sub Private Sub IObjectWithSite_SetSite(ByVal pUnkSite As IUnknown) ’获得IE接口 Set m_objIE = pUnkSite End Sub Private Sub m_objIE_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) ’如果浏览的网站不是applevb.com则不许浏览 If (InStr(URL, “applevb.com“) = 0) Then MsgBox “You can only visit applevb!“ Cancel = True End If End Sub 将这个工程编译为:prjBHO.dll。编译工程后,可以通过调用regsvr32 prjBHO.dll注册这个组件,组件注册了以后,就会在注册表HKEY_CLASSES_ROOT\CLSID中注册组件的GUID。在注册表中用prjBHO.dll做关键字就可以查找到prjBHO.dll注册的GUID,然后将这个GUID拷贝下来,然后在注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects 下创建一个新项,项的名称就是这个GUID。 搞定以后,打开IE,这时你的IE就只能浏览 applevb.com了 ^_^