描述:
当IDispatch接口抛出错误的时候,是不是这个接口的返回值在VBS中就得不到。
1.创建一个实现IDispatch接口的.dll。
其中有一个接口函数
[id(26), helpstring("method CopyHere")] HRESULT CopyHere([in] BSTR srcObjectID,[out, retval] BSTR* ppResObjectID);
2.在VBS(或ASP)中调用这个函数
Dim strTempOMID
strTempOMID = objFolder.CopyHere(strCopySrcOMID)
If Err.Number <> 0 Then
MsgBox Err.Description
End If
MsgBox strTempOMID
3.现在真正调用时,在CopyHere里面会跑出错误,但是在这种场合下,CopyHere的返回参数已经被设置上了数值例如“1000”。但是这个值在VBS中就得不到,仍然是个空值。
#抛出的错误是自定义的,是用CreateErrorInfo来创建的。
但是在c程序中能够得到,因为在C程序中得到返回值的方法是:
HRESULT hret = CopyHere(SrcObjectID,pVal);
(直接给pVal返回值地址赋值)
请高手指点。。。。。
解决方案1:
upupup
解决方案2: 不可能呀!我都是这么用的,从来没有见过出错!
gai
Dim strTempOMID As String
strTempOMID = objFolder.CopyHere("1000")
您可能想查找下面的文章:
- 实现了IDispatch接口的组件和ActiveX控件用起来有什么不同呢?我觉得一样可以用在Web页面上,为什么ActiveX控件还要多实现那么多各种各样
- 实现了IDispatch接口的组建,用vbscript怎么调用?
- MSFlexGrid有一个Picture属性,是一个IDispatch接口指针,请问如何操作?
- 怎样查询ActiveX控件的IDispatch接口每个ID代表函数
- MFC实现IDispatch接口问题?
- 如何hook住com接口的idispatch接口的虚函数invoke?
- IDispatch双接口,自动化,是一样的东西吗
- 如果一个组件实现IDispatch接口,那么能否是一个"自描述"的组件?
- C++SDK怎么使用IDispatch接口实现函数管理
- mfcdriller示例程序中,派生的IDispatch接口方法GetIDsOfNames的参数cNames是指什么?