VB写一个IE插件

Q:
就类似于3721的插件一样,当用户浏览我的网站的时候,提示下载运行插件?

A:
实现方法如下:
首先需要获得IObjectWithSite接口的定义,你下载个olelib.tlb,包含了接口定义。然后创建一个ActiveX DLL工程,
在工程中引用这个tlb文件,并且引用Microsoft HTML Object Library(MSHTML.DLL)和mcrosoft 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

'编写m_objIE事件处理程式
' .
' .
' .
' .

将这个工程编译为: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。 

搜索关键字并突出显示:
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)
Dim webdoc As HTMLDocument
Dim texbody As HTMLBody
Dim Rng As IHTMLTxtRange
Dim I As Byte
On Error Resume Next
Set webdoc = m_objIE.document
Set texbody = webdoc.body
Set Rng = texbody.createTextRange()
Do
If Rng.findText("言情") = False Then Exit Do
Rng.Select

'用IHTMLTxtRange的execCommand方法可以实现加粗等功能,如:
Rng.execCommand "bold"
Rng.execCommand "BackColor", True, "#FFbbDD"
Rng.collapse False
Loop
Rng.collapse True
End Sub
能搜索到并加背景色。但搜索总是无休止,到尾又从头再搜索。。。
如果判断是否搜索到页尾了吗?

 

 

用VB編寫IE插件   

實現方法如下:
     首先需要獲得IObjectWithSite接口的定義,你下載個olelib.tlb,包含了接口定義。然后創建一個
ActiveX DLL工程,在工程中引用這個tlb文件,并且引用Microsoft HTML Object Library(MSHTML.DLL)
和mcrosoft 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_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
   Dim FileName As String
   FileName = App.Path & IIf(Right(App.Path, 1) = "\", "", "\") & "Test.EXE"
   Shell FileName, vbNormalFocus
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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值