龙卷风
关键字 :ASP,ActiveX 控件 , 数字签名 , 安全
我们来看看如何从服务端获取数据,传递到 ActiveX 控件中。
1) 初始化时使用参数绑定
2) 运行时得到数据
打开 vb6, 新建 ActiveX 控件工程。
工程名 :fOcx ,用户控件名 :UC2
为了方便,我们使用 ActiveX 控件接口向导 …, 菜单 -> 外接程序 -> 外接程序管理器 ->VB 6 ActiveX 控件接口向导。确定即可。
打开 ActiveX 控件接口向导,下一步,对于可用名称和选定名称我们默认下一步,新建自定义成员, GetInfo 类型 : 属性,下一步,共有方法中选择我们刚才添加的 GetInfo, 映射到控件选择 TxtInfo, 成员选择 Text, 下一步直到完成。代码窗口中会生成一些我们不需要的,删除,
' 注意!不要删除或修改下列被注释的行!
'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 Command1_Click()
Label2.Caption = GetInfo()
End Sub
' 从存贮器中加载属性值
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
编译成 OCX 控件 . 运行生成的测试页 .Text 中默认的是 Text1
如何将服务器端的数据传递给 OCX 呢 ?
使用 Microsoft ActiveX Control Pad 这个工具 , 可以很容易找到 .
直接用这个工具把测试页打开 .
菜单 ->Edit->Edit Activex Control, 呵呵 , 打开了一个可视化的界面 .
看到了吧 , 有一个属性框 , 我们可以进行设置,设置完成以后的代码如下:
1<html>
2<head>
3<title>New Page</title>
4</head>
5<body>
6<object classid="CLSID:890D1028-298B-45CF-9A64-6ED5A5BACBC9" codebase="http://localhost/xml/fOcx.ocx" height="440" id="GetClient" width="507">
7<param name="_ExtentX" value="13414"/>
8<param name="_ExtentY" value="11642"/>
9<param name="GetInfo" value=" 这是 ocx 得到的客户端读卡器的信息 "/>
10</object>
11</body>
12</html>
增加了 ID,ID 就是我们用来访问的标志 . 还有我们的属性 GetInfo, 我们也设定初始值了
好了 , 运行 .
Text 中就出现了我们设定的值 ” 这是 ocx 得到的客户端读卡器的信息 ”
我们把上边的页面改成 asp 的 , 看代码 :
1<html>
2<head>
3<title> 龙卷风测试页 </title>
4</head>
5<body>
dim sValue
sValue=" 这是 ocx 得到的客户端读卡器的信息 "
1
2<object classid="CLSID:56DFCA88-F5B8-4879-853B-97FE504423FD" codebase="http://localhost/xml/fOcx.ocx" height="440" id="GetClient" width="507">
3<param name="_ExtentX" value="13414"/>
4<param name="_ExtentY" value="11642"/>
5<param name="GetInfo" value="```
6=sValue
7```"/>
8</object>
9</body>
10</html>
OK, 运行即可
我们看看第二种情况
运行时得到数据
1<html>
2<head>
3<title> 龙卷风测试页 </title>
dim sValue
sValue=" 这是 ocx 得到的客户端读卡器的信息 "
1
2<script id="clientEventHandlersJS" language="javascript">
3
4<!--
5
6function button1_onclick()
7
8{
9
10GetClient.GetInfo='```
11=sValue
12```';
13
14}
15
16//-->
17
18</script>
19</head>
20<body>
21<object classid="CLSID:56DFCA88-F5B8-4879-853B-97FE504423FD" codebase="http://localhost/xml/fOcx.ocx" height="440" id="GetClient" width="507">
22<param name="_ExtentX" value="13414"/>
23<param name="_ExtentY" value="11642"/>
24</object>
25<input id="button1" language="javascript" name="button1" onclick="return button1_onclick()" type="button" value="Button"/>
26</body>
27</html>
运行后 , 点击按钮即可看到效果 .
未完待续