.NET贯彻的(ActiveX插件开发)

发布时间:2018-11-15  栏目:w88优德官网电脑版  评论:0 Comments

当打算讲就篇稿子之前自己深思一个下午,打算分点儿篇来讲的,但是还要害怕读者看正在嫌烦;其实有点了解一点ActiveX插件的情侣都能够领悟,这样一扯可能出现平积聚问题;但是自要么控制通过简单的主意尽量让初大家少沾底层的事物包括OLE(对象连接与坐)、COM(组件对象模型)之类的概念,但是ActiveX插件在出上闹酷高之艺要求,虽然.NET为我们封装了老大好的落实路径,但是咱吧总不能够停留在,知自然而不知其所以然的范畴上;今天这篇文章我大致构思了一下,我根本会由于浅入深的失去逐层的教授,对一些概念性的东西,我会见于有参考资料供大家去上,由于其的提高历史我也尽管未错过教授了,主要是实现为主;如果爱刨根问底的情侣可错过查询相关的篇章或看片有关OLE、COM方面的图书,就算我们不从事相关支出,但是对咱们进行.NET互操作方面要生有救助的,也未见得让我们觉得.NET的局限性;本人向大家推荐一本OLE方面的好题:《OLE
2高级编程技术》

其实说于ActiveX插件大家都见面想起Flash插件,对Flash插件就是一个良独立的COM组件,宿主在以OLE为容器的Web浏览器应用程序中,我们将这OLE容器称为复合文档应用,复合文档应用程序在微软的体系所在可见如:Office就是一个死强劲的复合文档应用程序,为什么要叫复合文档应用程序呢,是坐坐容器为宿主的当儿,可以展开其它利用集成开发,在office里面我们得以进行图片的修、Excel的修等等;在斯OLE中使的目标严格意思上说都是COM组件,对COM不打听的情人可以错过押一下《COM本质论》也是一模一样以好好的书,其实COM就是组件对象模型,是二进制的机件,在外平台外语言里都能下;它是相同学组件规范一套开规范,大家都失去遵守这个约定,才会要不同厂商生产的组件互相调用;而ActiveX插件就是是一个COM组件,在首的开支被针对COM的开支是同等种恐怖之感觉,也许我们做.NET开发的次第的发出组件DLL可能并没有多生难度,不需要去探听一些操作系统底层的事物比如:函数在编译过后重新编码对调用产生的熏陶,不同操作系统对可执行文件的内存分配回收等等问题,都亟需支出组件的食指洞悉之后才能够出出良好之COM组件,然而以今日我们站在.NET这只航母及,不需害怕这些扑朔迷离的技术难题,微软也咱开辟一鼓向平大道的大门,用最好简易的方式去开极复杂的事物,从某种角度说是好事,坏事就是受咱们更为远离中心的东西; 这即将扣押每个人对技术的追目标了;

由于.NET开发出的事物都是属托管的,所以未是正真意义上的二进制标准,这就拉扯到.NET平台调用的技能P/Invoke和互操作Interop技术,但是咱无了解也未尝涉及,这不影响我们开发ActiveX插件,我只是让大家指一个方向;用.NET开发出的事物而想完全代表COM组件,因为OLE容器只受COM组件才会利用,所以我们的托管DLL文件怎样才能被OLE容器调用呢,就是通过.NET互操作COM来实现,我们开之ActiveX插件而被浏览器这么一个大强的复合文档程序加载与下的,所以我们得用托管的零部件封装成非托管的当的COM组件才行,.NET提供了CCW(COM可调用包装)的建制,将我们的ActiveX插件通过中转换一下就是好采用了,理论的物本身哪怕到此结束,我们开动手做一个ActiveX插件吧;先押一下ActiveX插件的运行图:

1:

w88优德官网电脑版 1

立是系于运作过程遭到假如经历的过程调用步骤,有助于我们下的开支讲解;首先是浏览器接受到长途服务器返回的HTML文本,然后浏览器将HTML转换成为DOM对象在经过GDI或者GDI+进行绘图渲染等界面呈现工作,发现以HTML中含了针对该地机械上的COM组件调用,通常也就算是咱们HTML中之object标签所定义的辨证;在标签中会含有COM组件的唯一标识符GUID(全局唯一ID),在咱们机器是正在无数个COM组件,只有通过GUID才能够确定是啦一个零部件,浏览器通过GUID到注册表中去寻觅这COM组件在本机注册时之地方,得到地方后在以那COM组件加载到内容运作;这个进程让自己细化了,只要会证明原理就是行了;

脚我们进来到VisualStudio工具进行ActiveX插件开发,我们设新建一个列是类别须得DLL文件之形式在,但是要是ActiveX插件必须得有界面啊;所以我们新建一个Windows窗体控件库项目:

2:

w88优德官网电脑版 2

新建后会现出一个默认的用户从定义控件我们随便放一个按钮就行了,然后写点测试代码;

3:

w88优德官网电脑版 3

各级一个ActiveX插件都来一个输入地址,这就是COM入口地址;我们即便以我们地方的这个测试界面作入口地址;我们切换到代码视图;

4:

w88优德官网电脑版 4

俺们以斯近乎的端添加了片只特征,ComVisible是否对COM公开,这个特点的意思就是我们的零部件是否能用来COM组件的有关调用查找;如果没这特性我们的零件是休克为此作COM调用的;GUID特性就是之所以来也咱的这个类别确定一个部署至客户机器的绝无仅有标识符;这个GUID可以由此VisualStudio工具栏中的效能自动创建;我们尚不一一步就是成功就了这样一个宏大之工了,我们右击项目选择属性会出去下这个界面:

5:

w88优德官网电脑版 5

用为COMw88优德官网电脑版互操作注册勾选上,作用就是是以能够同COM等零件进行互动调用了,在我们先后目录中见面转移一个跟零部件名称一致的tlb文件,必须产生之文件我们才会应用是插件,tlb文件是一个类型库文件,作用就是用托管DLL文件之备消息导出成COM规范的接口文件,在这个tlb文件中定义了COM的调用约定;由于COM和.NET组件无法直接交互所以只能通过tlb文件来规定我们的托管的DLL文件中定义哪些东西;我们编译一下;我们还不一一个HTML文件,这个文件管是自哪里还可以,这个HTML文件中要定义调用我们这个ActiveX插件才行;

6:

w88优德官网电脑版 6

自家红箭头标记的地方就是Object标记所定义之调用代码,ID就是吧调用的ActiveX插件打的一个名便于在页面中通过JS进行互操作;CLASSID是使调用的ActiveX插件在用户机器及之GUID唯一标识符;CODEBASE如果用户机器上尚未安装是插件则叫浏览器帮忙下载的URL地址;其他的标记就是暨通常的HTML一样的了;在这个我通过插一下,所有的HTML标记最终还见面给换成为活生生的对象,而未是咱所谓的HTML纯文本;

咱保留HTML文件,并且打开这个文件就可知看见ActiveX插件被加载运行了;

7:

w88优德官网电脑版 7

自己这边之间简单的任课了一下ActiveX插件的为主创建过程,其实ActiveX插件的法力非常强大,对B/S一些之机能只能够经过插件来缓解而:大文件上传、视频采访、照片动态采集等等;插件在布局之时段一定要是小心,部署及用户机器及之时节,在属性栏中来一个文书注册方式,一定要是摘也COM注册这样才会在注册表中补充加相应的节点;ActiveX插件开发大概就是称了了;希望谈的尚算清晰明了;

留下评论