用VB编写一个插件

用VB编写一个插件,第1张

BHO(浏览器辅助对象)用于IE的加载项中,可以对IE的事件进行拦截编程(可以是IE上的工具条,或者按钮或者不可见插件).BHO的定义位于注册表"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\" 下,当IE启动时就加载了该项下所有子项.通过IObjectWithSite接口同前面的工具条扩展一样可以用来获得浏览器的接口,而IDispatch接口,则被用来监听浏览器的事件。

首先需要获得IObjectWithSite接知乱口的定义,你下载个tl_ole.zip,包含了接口定义,下载下来以后,把它应用

然后创建一个ActiveX DLL工程,名称为MyBho 在工程中引用这个tlb文件,

并且引用Microsoft HTML Object Library(MSHTML.DLL)和mcrosoft Internet Controls(Shdocvw.dll)。

Implements IObjectWithSiteTLB.IObjectWithSite

Dim WithEvents m_ie As InternetExplorer '浏览器对象

Attribute m_ie.VB_VarHelpID = -1

Dim m_Site As IUnknownVB 'COM 接口

Private Sub IObjectWithSite_GetSite(ByVal priid As IObjectWithSiteTLB.GUIDPtr, ppvObj As IObjectWithSiteTLB.VOIDPtr)

m_Site.QueryInterface priid, ppvObj

End Sub

Private Sub IObjectWithSite_SetSite(ByVal pSite As IObjectWithSiteTLB.IUnknownVB)

Set m_Site = pSite

Set m_ie = pSite '获取到对象以后可以做自己想做的一切

End Sub

将这个工程编译为:MyBho.dll。

编译物局工程罩猛让后,可以通过调用regsvr32 MyBho.dll注册这个组件,这个地方如果这个组件在系统目录下的话就不用带路径,否则的话要带路径,如e:\\MyBho.dll

组件注册了以后,就会在注册表HKEY_CLASSES_ROOT\CLSID中注册组件的GUID。

在注册表中用prjBHO.dll做关键字就可以查找到MyBho.dll注册的GUID,然后将这个GUID拷贝下来,然后在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects下创建一个新项,项的名称就是这个GUID

Private Sub m_ie_DocumentComplete(ByVal pDisp As Object, URL As Variant)

On Error Resume Next

MsgBox CSTR(URL)

End Sub

1。新建>外接程序(需要VB企业版)

2。然后双设计器下的Connect,在出来的对话框中,将“应用程序”选“Microsoft Word”。

3。在工程>引用中添加对“Microsoft Word xx.0 Object Library”的引用。

4。在connect上点右键,选查看代码

5。编写代码,下面的则拿橘示例代码演示如何向word添加一个QuickSearch工具栏,并在上孙团面添加一个“划词搜索”按钮,在word中选中一些文字后点击此按钮,会打开一个IE窗口在百度中搜索当前选中的文本:

Option Explicit

Private WithEvents wdApp As Word.Application

Dim myBar As CommandBar

Private WithEvents myButton As Office.CommandBarButton

Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)

Set wdApp = Application

On Error Resume Next

wdApp.CommandBars("QuickSearch").Delete

On Error GoTo 0

Set myBar = wdApp.CommandBars.Add("QuickSearch")

myBar.Visible = True

Set myButton = myBar.Controls.Add(msoControlButton)

With myButton

.Style = msoButtonCaption

.Caption = "WORD划词搜索"

End With

End Sub

Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)

On Error Resume Next

wdApp.CommandBars("QuickSearch").Delete

On Error GoTo 0

Set wdApp = Nothing

End Sub

Private Sub myButton_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)

Dim ie

If wdApp.Selection.Text <>"" Then

Set ie = CreateObject("internetexplorer.application")

ie.Visible = True

ie.navigate "http://www.baidu.com/s?wd=" &wdApp.Selection

End If

End Sub

Private Sub wdApp_WindowSelectionChange(ByVal Sel As Word.Selection)

If Sel.Text = "" Then

myButton.Enabled = False

Else

myButton.Enabled = True

End If

End Sub

6.编译为Dll后再打开word就可以看到“QuickSearch”工具栏了,如果要复制到其他电脑上使用,则需要使用“regsvr32 [所编译的dll文件的完整路径]”命令先注册一下,或者使用“工具>COM加载宏”菜单命令加载或卸载。

使用VB6.0给word做插件可以实现的不仅仅是上述这些,还可以修改word程序的右键菜单,调用word中众多对象的各种属性、方法,敏仿响应word提供的事件等,同时兼有VB6中可以使用自定义控件、控件数组、资源文件、代码不易被破解等优点来弥补word VBA的不足。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12565239.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存