VB开发BHO插件的方法
1.找出VB安装文件的一个东西 F:VB6.0COMMONTOOLSVBUNSUPPRTTYPLIB,这个目录里有一个文件MKTYPLIB是用来生成库文件的。 复制到一个新建文件夹备用 2.新建一个文本文件,把下面的代码复制进去: [ uuid(CF9D9B76-EC4B-470D-99DC-AEC6F36A9261), helpstring("VB IObjectWithSite Interface"), version(1.0) ] library IObjectWithSiteTLB { importlib("stdole2.tlb"); typedef [public] long GUIDPtr; typedef [public] long VOIDPtr; [ uuid(00000000-0000-0000-C000-000000000046), odl ] interface IUnknownVB { HRESULT QueryInterface( [in] GUIDPtr priid, [out] VOIDPtr *pvObj ); long AddRef(); long Release(); } [ uuid(FC4801A3-2BA9-11CF-A229-00AA003D7352), odl ] interface IObjectWithSite:IUnknown { typedef IObjectWithSite *LPOBJECTWITHSITE; HRESULT SetSite([in] IUnknownVB* pSite); HRESULT GetSite([in] GUIDPtr priid,[in,out] VOIDPtr* ppvObj); } } 另存为:IObjectWithSiteTLB.odl ,注意扩展名 把这个IObjectWithSiteTLB.odl拖到 MKTYPLIB.exe上,注意看,自动生成了我们要用的文件IObjectWithSiteTLB.tlb, 建立dll工程 打开vb6.0 --新建一个activeX dll 工程, 把下面的代码复制进去, Implements IObjectWithSiteTLB.IObjectWithSite Dim WithEvents IE As InternetExplorer Dim M_Site As IUnknownVB 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 IE = pSite End Sub 添加引用 在“工程”--“引用”里,通过浏览引用我们生成的IObjectWithSiteTLB.tlb 再次添加一个引用:microsoft internet controls 在工程中使用以下代码 Private Sub IE_DocumentComplete(ByVal pDisp As Object,URL As Variant) MsgBox URL,vbInformation,"baidu for u" End Sub 点击文件 . 生成生成bho1010.dll ,当然你知道名字是你自己来取的 在你的操作系统目录下有一个systm32目录,在里面有一个exe文件,名字是regsvr32,是用来注册组件的。 在资源管理器你把bho1010.dll 拖拉到regsvr32.exe身上,显示注册成功。 运行regedit.exe 在注册表里搜索bho1010.dll,你会在HKEY_CLASSES_ROOTCLSID中看到注册组件bho1010.dll 的GUID。然后将这个GUID拷贝下来,然后在注册表 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerBrowser Helper Objects 下创建一个新项,项的名称就是这个GUID。 搞定以后,打开IE,看看效果出现了吗? 修改的时候,只要关闭了 ie,重新生成bho1010.dll 文件就可以。 当然,你可以在 ie的“工具(T)”--"管理加载项下",启用/禁用 你的插件 以上的注册步骤可以通过程序来自动实现
在vb6里新建一个exe工程,引用windows script host object model对象,和TypeLib Information (TLBINFO32.dll) 然后编写以下代码: Dim wsh As New WshShell Private Const PROCESS_ALL_ACCESS = &H1F0FFF 当你想删除这个bho的时候,只点击 浏览器工具栏里的 工具-----管理加载项-----启用或禁用加载项,再里面找到你要禁用的bho,点禁用即可.或者直接到注册表的HKLMSOFTWAREMicrosoftWindowsCurrentVersionExplorerBrowser Helper Objects下删除相应dll的clisd即可. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |