我想将警报名称列表从 COM 传递到 ASP 页面中使用的 VBScript。如果方法名称是 GetAlarms
,方法的签名是什么?。 GetAlarms
返回的警报数量会有所不同。
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
。
关于c++ - 从 com 对象返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6338879/