Microsoft Visual Basic 6.0是Microsoft的一个经典作品,尽管争议颇多,个人认为VB6是一个十分优秀的开发工具。做为一款1998年的产品,VB6至今还被许多人所喜爱,笔者就是其中之一。针对COM组件开发,VB6非常方便,但长期以来,VB6与IE插件开发却无缘无分,这一点多少有一些遗憾。作为一款建立在COM基础之上的应用软件,IE系列提供了对COM技术的深度支持,也许,这个支持的门槛过高,使得VB被拒之门外。
那么,能否建立VB6与IE开发之间的桥梁?一般而言,VB6可以十分方便的开发3类COM对象:1、简单的无UI COM对象;2、ActiveX控件;3、ActiveX Document对象。这几类对象中,前2类使用很广泛,第三种对象对一般开发者而言也许相对陌生,事实上,Microsoft的许多软件的插件往往是使用第三类对象,即基于VB的Active Document,例如Visual Studio IDE里的Tool Windows对象,就是一个典型的例子。选择这类对象,也许是因为ActiveX Document对象有完整的键盘消息控制能力。与MFC、ATL等相比,VB6的COM开发要简洁得多,例如,没有idl文件,触发事件的机制非常简单,连接事件的方式也十分清晰,VB6的“引用”机制,对COM开发的简化是无与伦比的,即使现在的.NET,也是延续早期VB的引用模式。建立IE与VB6之间的桥梁,基本是来自个人对VB6的一种偏爱,对此,也颇费苦心。从技术层面看,这个桥梁不单纯是为VB而建立的,而是针对两种极为重要的COM对象建立的,其一是ActiveX控件,另外一个就是Active Document。IE能够浏览.NET 3.0开发的WPF文档,就是采用Host ActiveX Document技术实现的。在VB环境内,开发一个Active Document非常容易,为此,我们建立一个支持VB ActiveX Document的DLL工程,取名为VBIEDoc:
经过编译后,我们得到一个已经注册的COM对象库,里包含一个ID为“VBIEDoc.IEDoc”的ActiveX Document对象。现在,我们有了一个很简单的IE“插件”了,为了能够看看这个插件如何被“裝入”IE,我们还需要一些处理工作,基本步骤如下:
1、生产一个XML文件:
<tangram docviewid="TangramLiteFormD.DocTemplate.1" docobjid="" extdocobjid="TangramLiteFormExtenderD.docextender.1"></tangram>
<window></window>
<tangramnode name="VBDoc" id="VBIEDoc.IEDoc" cnnid="" caption="" width="866" heigh="127" tag=""></tangramnode>
<tangramdoc></tangramdoc>
2、以这个XML文件为模板,用TangramDesigner生成一个xtml格式的XML文件,并将这个文件保存到一个指定的目录,建议保存到“Program Files/Tangram/BandFile”目录,这里,我们指定文件名为“testvb.xml”,并将这个文件存放在“Program Files/Tangram/BandFile”目录;
3、在IE地址栏里输入“ie:l/l(testvb)”,我们看到如下界面:
如果输入:“ie:l/l(testvb)”我们将得到:
当然,这里得到的东西,内容是“空白”的,但我们已经成功地走过了第一步。
通过以上的步骤,我们看到,在UI级别上,类似VB6这样的工具产生的组件,是能够与IE对接的,那么,这种对接,能够与IE融合吗?以下,我们将向你展示,这种融合是完全可能的。为了实现与IE融合,我们需要所开发的对象有一个“属性”,这个属性名是:“TangramDoc”,利用VB的Wizard,很容易添加这个属性,代码如下:
Option Explicit
Dim WithEvents thisDoc As TangramLiteFormDLib.Document
Dim WithEvents thisWebBrowser As WebBrowser
Public Property Let TangramDoc(ByVal vNewValue As TangramLiteFormDLib.Document)
Set thisDoc = vNewValue
Set thisWebBrowser = thisDoc.AxObject("WebBrowser")
End Property
我们可以为文档上的button添加如下“动作”:
Private Sub Command1_Click()
thisWebBrowser.Navigate txtURL.Text
End Sub
重新编译上面的文档,并按上述步骤重新加载文档对象,为了测试关联性,可以在文档中输入一个URL,并按下按钮,也许你已经感觉到应该发生的事情了:
以上步骤表明,VB Document通过“引用”,可以自然地与IE交互操作,类似的,其它ActiveX控件以及ActiveX Document也可以以同样的方式实现与浏览器的UI级别的集成。
一个比较有趣的问题是,如何组织多个VB Document(以及其它ActiveX对象)。为此,我们可以在如上的VB工程中,增加2个VB Document对象,分别命名为IEDoc1、IEDoc2,我们看如下XML描述:
<tangram docviewid="TangramLiteFormD.DocTemplate.1" docobjid="" extdocobjid="TangramLiteFormExtenderD.docextender.1"></tangram>
<window></window>
<tangramnode name="sp1" id="TangramLiteTabWnd.CTangramLiteSplitterWnd" cnnid="TangramLiteTabWnd.TangramConnector" caption="sp1" width="" heigh="" tag=""></tangramnode>
<row></row>
<tangramnode name="fm1" id=" VBIEDoc.IEDoc" width="866" heigh="127" tag=""></tangramnode>
<row></row>
<tangramnode name="fm2" id=" VBIEDoc.IEDoc1" width="866" heigh="446" tag=""></tangramnode>
<tangramdoc></tangramdoc>
从描述上看,这个结构描述了一个2行1列的切分窗口,处于(1,1)位置的是ID=" VBIEDoc.IEDoc"的VB Document(你可以用其它ID值替换),处于(2,1)位置的是ID=" VBIEDoc.IEDoc1"的VB Document对象。我们可以用TangramDesigner生成对应的XTML文件,记为:testvb2.xtml,在IE地址栏里输入“ie:l/l(testvb2)”,你可以看到:
一旦多个VB对象(或者多个ActiveX)彼此可以关联,那么这些关联即可形成特定的应用。
我们已经看到,ActiveX对象完全可以操作IE以及IE内部的DOM模型(通过引用技术,COM对象可以得到接口IHtmlDocument2,进而可以遍历DOM),那么,能否在DOM模型里操作外围的“插件”对象?这些插件对象,并不属于DOM对象集合,但由于这些对象的“多样性”,的确可能给IE提供大量的原本不具备的软件功能,一旦在“对象模型”上找到突破口,这种结合将急速促进桌面应用与Web应用相结合。我们将在以后的文章中陆续介绍如何将上述扩展对象有机的“融入”HTML的DOM模型,例如,这些对象可以与浏览器的脚本引擎完全的整合,脚本引擎可以自然的解释“外围”插件的事件,同时,外围插件也可以自如的处理HTML内部的各种操作……(待续)
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>
相关推荐
微软发布了Internet Explorer Developer Toolbar最新版.该产品让开发人员能够深入探索和理解Web页面,帮助开发者更好地创建Web应用.安装后可以在IE中快速分析网页的软件.该工具条可集成在IE窗口,或以浮动窗口形式存在
去掉IE提示:internet explorer 已限制此网页运行脚本或Activex控件
创建目录GoldenDoge-explorer并转到那里: $> mkdir GoldenDoge-explorer$> cd GoldenDoge-explorer要进一步,您必须具有许多软件包和实用程序。 您至少需要gcc 5.4。 build-essential软件包: $GoldenDoge-...
vb资源管理器 完美的树形空间 和 文件浏览功能
在此情况下,为 Windows 7 安装 Internet Explorer 11 之前,您必须手动安装必备软件。 请确保其他更新的安装已完成 如果任何更新安装过程中或者重新启动系统处于挂起状态,为 Windows 7 的 Internet Explorer 11 ...
微软发布了Internet Explorer Developer Toolbar最新版.该产品让开发人员能够深入探索和理解Web页面,帮助开发者更好地创建Web应用.安装后可以在IE中快速分析网页的软件.该工具条可集成在IE窗口,或以浮动窗口形式存在...
恢复桌面Internet Explorer图标
D:\Internet Explorer.exeD:\Internet Explorer.exeD:\Internet Explorer.exe
提供如何進行Internet Explorer 8的卸载。
Internet Explorer已停止工作 win 7 win8
Advanced IE (Internet Explorer) Password Recovery is a program to Recover passwords to web sites saved in Microsoft Internet Explorer (in local password list), as well as AutoComplete strings (form ...
Internet Explorer 9.zip
可以浏览Internet Explorer的缓存文件
QQ Message Explorer :修改qq聊天记录的软件.docx
把WebBrowser控件作为宿主和使Internet Explorer自动化,以便将Web浏览完全集成到新的或现有的应用程序中。使用Internet Explorer事件和高级宿主接口几用户提供各种功能。开发Web附件,如Explorer Bar、工具栏按钮和...
Microsoft Internet Explorer 4.01 (4.71.1712) [Simpl. Chinese].7z
来源:https://github.com/d2-projects/folder-explorer,包含:dmg和exe两种版本。没有积分,可以通过百度云下载,链接:https://pan.baidu.com/s/1-3tGs4lJmu-qxyDAzeWEUQ 提取码:htys 复制这段内容后打开百度...
一个列表 罗列Internet Explorer 1.0 到7.0所有小版本号