VBS jS问题较弱,但放在C#,Asp.net等论坛没人回答!4贴并一帖400分
我有一个Activex组件,该组件将部署于客户端,用于与客户端安装的设备进行通讯。
我目前做法是用VBS调用该Activex组件,基本上可以实现功能,但我有些疑问想在这里和各位咨询下
Activex组件有三个函数,三个函数都具有多个in参数和多个out参数
1、没有采用js调用Activex的原因?
js是不是只能针对一个out参数,请高人指点一二!
2、前后后台代码互相调用的问题。
操作流如下,C#后台代码处理数据,调用Activex函数将数据写入设备中,Activex通过out参数告知成功失败。
成功后,C#后台将该条处理数据记录存入数据库。
目前难点在于 VBS无法准确的将out参数返回给后台。
我本来通过组件隐藏域将结果返回,VBS将结果赋值给组件隐藏域,然后后台代码通过该组件获得结果。但发现,必须在后台提交后才可以获得该隐藏域的值,在一个过程中,该组件的值并没有发生变化。
前台代码
<script language="VBscript"> Function sdWriteCardp(UserID,BuyPower,sData,PtcType,FlagInfo) dim ReCode MsgBox Cstr(UserID) MsgBox BuyPower MsgBox sData MsgBox PtcType MsgBox FlagInfo SDUSB.WriteCard FlagInfo, BuyPower, UserID, PtcType ,sData , ReCode document.getElementById("iReCode").value=ReCode; End Function </script>
<input type="hidden" id="iReCode" name="iReCode" value="">
private void Button6_Click(object sender, System.EventArgs e) { int FlagInfo =0; double BuyPower=29.68; string UserID = "0000000101"; string sData ="123456"; int PtcType =1; string ss=" <script language='VBscript'> Call sdWriteCardp(\""+UserID+"\","+BuyPower.ToString()+ ",\""+sData+"\","+PtcType.ToString()+","+FlagInfo.ToString()+") <" + "/script>"; //调用前台代码 Page.RegisterStartupScript("ccsdWriteCard",ss); if(this.iReCode.value="0")//此处无法正确拿到本次调用VBS iReCode{ //成功 } }