现在有一个影像扫描ActiveX控件,它里面有三个接口,接口定义如下:
  IHsImageScan = interface; //IUnknown接口
  IHsImageScanDisp = dispinterface; //IHsImageScan接口对应的IDispatch接口
  IHsImageScanEvents = dispinterface; //事件IDispatch接口
  IScanParams = interface; //IUnknown接口 
  IScanParamsDisp = dispinterface; //IScanParams接口对应的IDispatch接口
  IScanParamsEx = interface; //IUnknown接口 
  IScanParamsExDisp = dispinterface; //IScanParamsEx接口对应的IDispatch接口ActiveX控件由一下代码在html中嵌入:
<OBJECT
  classid="clsid:D4312270-4ADA-4722-9F24-62990A64B827"
  codebase="http://localhost:8080/examples/aaaa/HsImageScanning.cab#version=1,3,0,1"
  width=749
  height=559
  align=center
  hspace=0
  vspace=0
  name="aa"
  id="aa"
>
在javascript中由以下代码可访问IHsImageScanDisp 接口中的熟悉和方法
<script language="javascript">
window.document.all("aa").ClearScanParams();
window.document.all("aa").visible = true;
window.document.all("aa").InitScanning();
window.document.all("aa").OptionVisible = true;
</script>
直到以上部分都很正常,现在的问题是:
IScanParamsDisp和IScanParamsExDisp如何访问??
这两个接口都是由IHsImageScanDisp中的方法NewScanParamsIntf(ScanParams, ScanParamsEx)来创建的,如果用delphi访问该Activex控件时,代码如下:
HsImageScan1.NewScanParamsIntf(ScanParams, ScanParams);
(以上代码中HsImageScan1是Activex控件实例,ScanParams和ScanParams是接口的句柄,执行上面语句后这两个接口会被实例化)
但是如果用javascript访问的话,如何创建呢?我用以下代码去变量a,b时IE报“类型匹配错误”:
<script language="javascript">
var a,b;
window.document.all("aa").NewScanParamsIntf(a,b);
</script>这个问题困扰我好几天了,望高手指教!