由于工作需要,需要将delphi编写的com通过网页的方式进行交互,但是如何交互呢,这就是一个大难题,通过查找资料以及查看vb的代码,发现如下的方式:
1、vb
<html>
<script type="text/vbscript">
option explicit
dim info, key, data
set info = CreateObject("User.UserInfo")
key = "12345678"
data = "123"
data = info.TestData(key)//通过返回值
MsgBox data
data = info.GetData(key, data)
key = info.Data //通过属性
MsgBox key
</script>
</html>
2、js
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>TestAxObj</title>
</head>
<body style="background-color:whitesmoke; margin:5px">
<form method="post" action="">
<object id="tc1" width="200px" height="20px" style="background-color:red;"
classid="CLSID:65E6BE73-2814-4B52-850A-939786D009BC">
</object>
<script type="text/javascript" language=javascript>
var tc1 = document.getElementById("tc1");
var s = "test";
var out = "";
var data1 = "";
tc1.GetData(s, out);
data1 = tc1.Data;//属性的方式
alert("属性" + data1);
s = tc1.TestData(data1);
alert(s);//返回值方式
</script>
</body>
</html>
这里的调用是针对于上篇文章的com编写方法写的调用脚本,大家可以参考来看。
其实,这里还有一个问题是没有解决的,本来想通过js脚本实现,delphi中var类型的参数的功能,实现一个数据的改变,例如在
var out = "";
tc1.GetData(s, out);
中想实现out值的更改,但是没能实现,所以将out的值传递给其属性,然后访问属性获得结果。
目前js可以使用的方法是通过属性和返回值的方式来处理类似的情况。
特意说明在vb中没有这种限制,可以使用这种方式的值的改变。
如果谁有这方面的资料可以共享哦。