ASP与ActiveX控件交互实战(一)

active|activex|交互|控件

龙卷风

关键字:ASP,ActiveX控件,数字签名,安全

ActiveX控件运行在客户端。我们可以获得客户端的一些信息,如IC卡的信息,客户端的验证等等。但是ActiveX控件也有许多缺点:客户端的部署很困难,如客户端不能正确下载,下载了以后不能正确执行,下载的时候需要设置IE的安全级别等等。

更多的时候,我都在使用COM组件来扩展ASP的功能。准确地说,是服务端运行的Activex Dll组件。使用Server.CreateObject(“工程名.类名”)即可完成对组件的调用。这种方式问题很少,只要组件中以PUBLIC对外暴露方法既可。但是,有时候我们必须使用ACTIVEX 控件(*.OCX)嵌入到网页中执行来获取客户端的信息。这就有了许许多多的一些问题。

这是我们需要解决的N个问题(从简单到难)

1. 如何从服务端获取数据,传递到ActiveX控件中。

1) 初始化时使用参数绑定

2) 运行时得到数据

2. ActiveX控件得到客户端的信息,如何传递到服务端。

3. 安全性

1) 数字签名

2) 使用IOBJSAFE接口

好了,我们开始实例学习。

这个功能演示了如何制作一个简单的控件,并嵌入网页中执行。

工作环境:WINXP+VB6+IE6

我的IE安全设置为安全级别-中。所有的Activex选项设为启用。

打开vb6,新建ActiveX控件工程。

工程名:fOcx,用户控件名:UC1

为了方便,我们使用ActiveX控件接口向导…,菜单->外接程序->外接程序管理器->VB 6 ActiveX控件接口向导。确定即可。

打开ActiveX控件接口向导,下一步,对于可用名称和选定名称我们默认下一步,新建自定义成员,GetInfo类型:属性,下一步,共有方法中选择我们刚才添加的GetInfo,映射到控件选择TxtInfo,成员选择Text,下一步直到完成。代码窗口中会生成一些我们不需要的,删除,剩下的代码如下:

Option Explicit

'注意!不要删除或修改下列被注释的行!

'MappingInfo=txtinfo,txtinfo,-1,Text

Public Property Get GetInfo() As String

GetInfo = txtinfo.Text

End Property

Public Property Let GetInfo(ByVal New_GetInfo As String)

txtinfo.Text() = New_GetInfo

PropertyChanged "GetInfo"

End Property

'从存贮器中加载属性值

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

txtinfo.Text = PropBag.ReadProperty("GetInfo", "Text1")

End Sub

'将属性值写到存储器

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

Call PropBag.WriteProperty("GetInfo", txtinfo.Text, "Text1")

End Sub

OK,好了,我们编译成fOcx.ocx文件,然后F5直接运行,VB会打开一个测试页。如下:

E:\Program Files\Microsoft Visual Studio\VB98\UC1.html

同时,打开你的IE浏览器,看到了吧,你做的控件出现在了这个测试页中。

你可以打开测试页,可以看到ClsID,比如:890D1028-298B-45CF-9A64-6ED5A5BACBC9

因为VB编译的时候已经完成注册.所以无法模拟客户端没有安装该控件时出现的提示.

我们继续

使用regsvr32 F:\csdn_vb\com+_activeX\sample1\fOcx.ocx –u卸载

或者

打开注册表,在HKEY_CLASSES_ROOT\CLSID下面找到

890D1028-298B-45CF-9A64-6ED5A5BACBC9项,删除之,当然这种方式还有项存在而没有删除干净.

此时浏览http://yang/uc1.htm,由于IE中ActiveX设置为启动,所以,控件会显示出来。

下载后的ocx到哪里去了???

打开该目录(可能有所不同)E:\WINDOWS.0\Downloaded Program Files,看到了吧,fOcx.UC1文件在这个目录下.

原理:客户端下载该控件后,自动注册,然后放在上述这个目录下.这时我们可以打开注册表看看CLSID,呵呵,还是以前的那个.

我们可以右键看看fOcx.UC1的属性,看看相关内容,这里显示了该OCX所依赖的所有文件.所以,你的OCX尽量减少使用高级控件或者第三方的控件,否则,下载就有些问题了.

如果IE中关于ActiveX的选项设为禁用,那么浏览器就会出现对话框”当前安全设置禁止运行该页中的ActiveX控件.因此可能无法正确显示该页”,这个就需要其他的方式来处理了。

一般用户默认的都是禁用ActiveX选项,所以让用户自己设置不太合适。

未完待续

时间: 2024-10-03 08:12:20

ASP与ActiveX控件交互实战(一)的相关文章

ASP与ActiveX控件交互实战

active|activex|交互|控件 关键字:ASP,ActiveX控件,数字签名,安全 ActiveX控件运行在客户端.我们可以获得客户端的一些信息,如IC卡的信息,客户端的验证等等.但是ActiveX控件也有许多缺点:客户端的部署很困难,如客户端不能正确下载,下载了以后不能正确执行,下载的时候需要设置IE的安全级别等等. 更多的时候,我都在使用COM组件来扩展ASP的功能.准确地说,是服务端运行的Activex Dll组件.使用Server.CreateObject("工程名.类名&qu

ASP与ActiveX控件交互实战(二)

active|activex|交互|控件 龙卷风 关键字:ASP,ActiveX控件,数字签名,安全 我们来看看如何从服务端获取数据,传递到ActiveX控件中. 1) 初始化时使用参数绑定 2) 运行时得到数据 打开vb6,新建ActiveX控件工程. 工程名:fOcx,用户控件名:UC2 为了方便,我们使用ActiveX控件接口向导-,菜单->外接程序->外接程序管理器->VB 6 ActiveX控件接口向导.确定即可. 打开ActiveX控件接口向导,下一步,对于可用名称和选定名称

ASP与ActiveX控件交互实战(三)

active|activex|交互|控件 龙卷风 关键字:ASP,ActiveX控件,数字签名,安全 问题提出: ActiveX控件得到客户端的信息,如何传递到服务端??? 一种方法就是得到值后,使用Get,Post方式提交,这可能也是最常用的. 有没有更好一些的方法呢? 能不能在控件中直接向服务器发出请求而得到数据呢? 打开vb6,新建ActiveX控件工程. 工程名:fOcx,用户控件名:UC3 添加1个按钮,2个文本框 代码如下: Option Explicit Private Sub C

ASP中ActiveX控件的内嵌及调用

active|activex|控件|activex|控件 懂ASP(Active Server Pages)的人很多,但能用ASP自如地调用ActiveX控件的人却不多:如果不调用ActiveX控件,则可以说微软当初设计ASP的初衷根本没有达到.众所周知,ActiveX技术是微软在Internet上除了IE外的另一个新举措,可以说该技术渗透在它的整个Internet策略中.ActiveX是一个功能强大的部件,可以用VB.C或C++等语言进行编写,因为是编译性执行,故速度比较快. 在ASP(Act

VC写的ActiveX控件能不能被ASP.NET引用

active|activex|asp.net|控件   1.尊敬的合作伙伴:您好!   非常感谢您使用微软新闻组技术支持!关于您提到的ASP.NET无法引用VC写的控件的问题,我想请问您是想在服务器端引用VC控件中的一些功能,还是VC写了一个ActiveX的控件而无法在网页中使用.请您能否详细描述一下您目前遇到的错误.或者是您引用VC控件时遇到的具体错误信息,这样以方便我们能够更好的来帮助您解决问题,谢谢! 2.关于您提到C#与VC写的ActiveX控件进行交互的问题,从您的描述来看,根据我的理

利用ActiveX控件InetCtls.Inet在ASP中实现新闻小偷_应用技巧

这几天维护网站的时候要加很多的新闻或者其它文章,因为经常到一个网站上找文章,所以就想,能不能做个程序,指定一个网址,让ASP去搜索这个网址上所有的文章,进而把搜索回来的文章进行分析,把文章内容保存到数据库里,这样不就可以省去很多麻烦了吗? 后来才知道,这个想法早就有人想过,也有人做过新闻小偷,呵呵,不过据说是php的,我没见过,呵呵,反正报着一种开发的心态开始进行工作-- 我记得以前收集的有一篇文章介绍的有如何用ASP获取别人的网页,拿出来一看,嗨,没几句代码: URL = http://new

activex控件 信息交互

问题描述 html调用activex控件怎么传递参数:我用C#建了一个windows窗体控件库工程,做了一简单的图片浏览器(图片地址固定的),生成的.dll文件放在另一个web工程中,页面调用方法<objectid="hellowsorld"name="hellowsorld"classid="clsid:02D324C9-F018-42D4-9AF2-22D6B934B3B5"width="1000"height=&q

ActiveX控件与Javascript之间的交互示例_javascript技巧

1.ActiveX向Javascript传参 复制代码 代码如下: <script language="javascript" for="objectname" event="fun1(arg)"> fun2(arg); </script> objectname为ActiveX控件名,通过<object>标签里的id属性设定,如下: 复制代码 代码如下: <object id="objectna

C#开发的ActiveX控件如何与脚本交互

问题描述 用C#写的ActiveX控件,如何实现点击控件中按件时,调用web页面中的脚本. 解决方案 解决方案二:沙发,友情UP解决方案三:为什么不用脚本来调用控制中按件的点击方法?解决方案四:在ActiveX中定义事件