我想写一个程序监控IE浏览的网址,如果是特定的网址就不让他浏览
解决方案 »
- 求助:在MDIForm窗体内无法使用Show加载窗体
- 关于listview写入ini文件的问题2
- 送50分问个小问题:VB.NET中怎么添加Winsock控件啊????
- 那位兄弟有WINSOCK传输EXE文件的VB源码
- 关于系统与VB安装的问题
- 我有一段代码总是出现问题我找不到问题的根源
- 组件注册时出现的错误(e:\xxx.dll was loaded,but the dllinstall entry point was not found)
- 请问如何用api实现webbrowser控件的功能?
- 关于在VB中使用SQL语句的问题!!!!
- 请问各位大哥,如何使窗体的标题栏闪动(前5人一定发粉)
- 求最小二乘法拟合多次曲线的代码!代码!
- VB中RICHTEXTBOX如何输入中文
创建一个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.IObjectWithSitePrivate WithEvents m_objIE As InternetExplorerPrivate 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 SubPrivate Sub IObjectWithSite_SetSite(ByVal pUnkSite As IUnknown)
'获得IE接口
Set m_objIE = pUnkSite
End SubPrivate 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了 ^_^
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects
下面注册的组件,然后获得这些组件的IObjectWithSite接口,如果组件实现了这个接口的话,就会调用接口的SetSite方法,并且把自身作为一个IUnknown接口参数pUnkSite传递过去,你在这个方法中就可以保存这个接口,并且响应接口方法。
关于InternetExplorer对象,你可以在MSDN中查找一下InternetExplorer Object的帮助。