0
我想将报警名称从COM列表传递到ASP页面中使用的VBScript。如果方法名称是GetAlarms
,该方法的签名是什么?由GetAlarms
返回的警报数量将有所不同。从com对象返回数组
VBScrip是否支持安全数组?
我想将报警名称从COM列表传递到ASP页面中使用的VBScript。如果方法名称是GetAlarms
,该方法的签名是什么?由GetAlarms
返回的警报数量将有所不同。从com对象返回数组
VBScrip是否支持安全数组?
在* .idl文件中的声明是这样的:
[id(1)] HRESULT GetAlarms([out,retval] SAFEARRAY(VARIANT)* pAlarms);
相应的C++方法是这样的:
STDMETHODIMP CMyClass::GetAlarms(SAFEARRAY** pAlarms)
{
CComSafeArray<VARIANT> alarms(3);
CComVariant value;
value = L"First Alarm";
alarms.SetAt(0, value);
value = L"Second Alarm";
alarms.SetAt(1, value);
value = L"Third Alarm";
alarms.SetAt(2, value);
*pAlarms = alarms.Detach();
return S_OK;
}
最后,这里是一个示例VBScript使用上述方法:
Set obj = CreateObject("MyLib.MyClass")
a = obj.GetAlarms
For i = 0 To UBound(a)
MsgBox a(i)
Next
在ASP中,当然,你会使用别的东西而不是MsgBox
。
@Maanu:为什么标记为C++?在C++中,你不能从函数返回数组。 – 2011-06-14 03:56:50
@Als除非他的意思是'SAFEARRAY'。 – 2011-06-14 03:59:40
@Als:我们在C++中编写COM组件 – Maanu 2011-06-14 04:23:18