JavaScript调用VBScript函数,如何传递参数?

东方冉 2008-06-26 11:14:13
由于要操作注册表,用JavaScript不方便实现,就使用了vbscript实现。在JavaScript调用VBScript函数时碰到了问题。代码如下:

<SCRIPT LANGUAGE="VBScript">
function getRegContent(a,b,c,d)
dim path, reg
path = "HKEY_CURRENT_USER\Software\Microsoft\testScript\"
Set reg = CreateObject("Wscript.Shell")
a=reg.RegRead(path+"\a")
MsgBox a
b=reg.RegRead(path+"\b")
c=reg.RegRead(path+"\c")
d=reg.RegRead(path+"\d")
end function
</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">
var a,b,c,d;
VBScript:getRegContent(a,b,c,d);
alert(a);
</SCRIPT>

在VBScript里用MsgBox打出来的a的值是正确的,但是在JavaScript里alert()出来的却是"undefined"。
请教一下,在JavaScript调用VBScript函数时,如何一次传递多个参数?


在网上查了一下,都是如下代码所示的,通过函数返回值实现的调用,这样函数只能返回一个值,如何返回多个值呢?
<SCRIPT LANGUAGE="VBScript">
function fromVBS()
fromVBS = "This is come from VBScript!"
end function
</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">
alert(fromVBS())
</SCRIPT>
...全文
745 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rambolxd 2008-09-05
  • 打赏
  • 举报
回复
我得好好学习一下了,调试调试看看~
wcwtitxu 2008-06-27
  • 打赏
  • 举报
回复
读取注册表也可以用 JavaScript


var path = "HKEY_CURRENT_USER\\Software\\Microsoft\\testScript\\"
var shell = new ActiveXObject("WScript.Shell");
alert(shell.RegRead(path + "\\a"));
wcwtitxu 2008-06-27
  • 打赏
  • 举报
回复
返回数组:

<script type='text/vbscript'>
Function P(a, b, c, d)
Dim arr(3)
arr(0) = a * 10
arr(1) = b * 10
arr(2) = c * 10
arr(3) = d * 10
P = arr
End Function
</script>
<script type='text/javascript'>
var vbArray = P(1, 2, 3, 4);
var javaArray = new VBArray(vbArray).toArray();
alert(javaArray.join(","));
</script>


wcwtitxu 2008-06-27
  • 打赏
  • 举报
回复
传对象
<script type='text/vbscript'>
Sub P(arg)
arg.a = "A"
arg.b = "B"
arg.c = "C"
arg.d = "D"
End Sub
</script>
<script type='text/javascript'>
var arg = {a:1, b:2, c:3, d:4};
alert(arg.a + "," + arg.b + "," + arg.c + "," + arg.d);
p(arg);
alert(arg.a + "," + arg.b + "," + arg.c + "," + arg.d);
</script>



东方冉 2008-06-27
  • 打赏
  • 举报
回复
谢谢楼上各位了!

暂时先调用了多个方法来实现,其他的办法有空试一试,哈哈。
xie_yanke 2008-06-26
  • 打赏
  • 举报
回复
<SCRIPT LANGUAGE="VBScript">
function getRegContent(a,b,c,d)
getRegContent = a & b & c & d
end function
</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">
var a,b,c,d;
a = "a, ";
b = "b, ";
c = "c, ";
d = "d, ";
alert(getRegContent(a,b,c,d));
</SCRIPT>
xie_yanke 2008-06-26
  • 打赏
  • 举报
回复
<SCRIPT LANGUAGE="VBScript">
function getRegContent(a,b,c,d)
eval(a)
eval(b)
eval(c)
eval(d)
end function
</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">
var a = 'MsgBox("a1")';
var b = 'MsgBox("b1")';
var c = 'MsgBox("c1")';
var d = 'MsgBox("d1")';

getRegContent(a,b,c,d);
</SCRIPT>
gray820928 2008-06-26
  • 打赏
  • 举报
回复
方法的返回值能有多个?我没见到过,如果真像你所说的那样,只好拼起来返回,没办法,要么你就调多个方法。。。
东方冉 2008-06-26
  • 打赏
  • 举报
回复
实际应用中,我需要在javascript里对这四个参数分别作处理,可不是简单的alert()。

如果是将a,b,c,d四个参数组合成一个字符串返回的话,我在javascript里还要再写段程序来解析这个字符串,将它们重新分割成a,b,c,d,这样太麻烦了。难道就不能直接传递多个参数吗?

组合字符串的话,分隔符也是个问题,因为无法预知从注册表里取出的值中包含什么字符。简单的"," ";"之类的肯定不行,还得选个基本不可能出现的字符。

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧