通过开发VB插件来扩展VB应用

通过开发VB插件来扩展VB应用,第1张

通过开发VB插件来扩展VB应用,第2张

一、插件介绍

从结构上看,一个VB插件其实就是一个COM组件。原则上,可以使用支持COM的开发工具来编写组件,如Delphi和VC。组件通过在COM中实现IDTExtensibility对象来建立与VB的连接。组件注册后,VB运行时在外接程序菜单中加载组件时,VB会调用组件中的IDTExtensibility对象中对应的方法(比如组件加载后会调用OnConnection方法)。这时整个插件就变成了VB的一部分,这样就可以访问VB开发环境中的各种对象和资源。

用VB本身写插件是一个很好的方法。首先可以通过VB快速建立一个IDTExtensibility对象框架(当然VB中不调用这个名字);其次,VB提供了相应的对象供插件访问和控制整个开发环境,使用插件的主要目的是通过插件控制宿主程序;最后,调试非常方便,可以直接运行看结果,不需要编译注册。

第二,建立程序框架

首先,让我们建立程序框架。下面的代码和描述都是用Win2K+VB6中文企业版完成的。在VB英文版和Win9X中运行只是程序中对界面的描述会根据不同的VB而有所不同。

打开VB,在菜单中点击文件|新建项,在新建项目窗口中选择“插件”项(英文版为Addin),然后点击确定按钮,创建插件项目。

建立后,在项目列表窗口中可以看到新项目的名称为MyAddIn。它包含两个对象:form类中的frmAddIn窗体和designer类中的Connect designer对象。VB为插件建立了一个基本框架。按F5运行插件,最小化VB主窗口。然后打开一个VB程序,在里面建立一个标准的Exe项目。单击菜单中的加载项|加载项管理器。在打开的外接程序管理器窗口的列表中,可以看到有一个我的外接程序项,点击它,然后在以下加载行为(英文版加载行为)区域选择全部三个复选框,然后点击确定加载插件。然后单击“加载项”菜单,再单击新添加的“我的加载项”项。可以看到插件弹出一个表单,点击确定获取VB运行的目录,点击取消关闭表单。

接下来,再次打开加载项管理器窗口。选择“我的加载项”,取消选中“加载行为”区域中的三个复选框。然后回到运行插件的VB程序,点击stop按钮,停止插件。

回到插件项目,我们主要看一下Connect对象,打开Connect对象的代码窗口。可以看到它包含两个对象:AddinInstance和MenuHandler。AddInstance是项目中用VB实现接口的对象。在程序中,对应的AddInstance包含两个方法:OnConnection和on connection。这里我们称它们为方法而不是事件,因为它们是由VB调用的,而不是由消息触发,由系统调用的。

加载插件时调用OnConnection方法,其中参数Application是调用插件的VB实例对象。该对象是一个VBE类对象。如果将VB传递给插件,插件可以通过Application对象访问和控制自己的VB实例。最重要的是这一段:
if connect mode = ext _ cm _ external then
Me . show
else
Set mcbmenucombar = addtoaddincombar(" addin sample ")
Set Me。MenuHandler = VBInstance。事件。CommandBarEvents(mcbmenumcommandbar)
End If

在上面的程序段中,首先判断ConnectMode加载插件的方式。如果它是由外部程序启动的,首先调用AddToAddInCommandBar方法将菜单项添加到外接程序的菜单栏中。

添加菜单项后,插件程序还必须能够响应菜单的点击。VB支持插件监控自身的许多事件,包括点击菜单、工具栏按钮、打开项目、添加/删除项目中的文件等。对于每个事件,VB实例包含一个相应的事件对象。该对象可以通过VB实例对象的Events属性来获取或设置。在插件程序中,可以预先定义一个事件对象,编写该对象的事件响应代码,然后将该对象赋给VB实例对象中对应的事件对象。在上面的程序中,需要插件来监控添加的菜单项的点击事件,所以首先在程序中定义一个带有事件的对象MenuHandler。并在程序中编写对象的Click事件代码,然后在OnConnection方法中用setme . MenuHandler = VB instance . events . command parents(mcbmenucombar)将menuhandler设置为已建立的menu对象的事件对象,那么VB在VB中单击我的外接程序项后就会调用menu handler的Click事件代码。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 通过开发VB插件来扩展VB应用

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情