我需要将一个空的变体数组传递给一个用 C 编写的 DLL(并且在所有 Windows 版本上都可用),并且 C 代码(我无法控制也无法编辑)将用它的一些返回值填充空的变体数组价值观。
基本上,当我尝试这样做时,ByRef 数组在应包含函数/子调用的结果时始终为空(如果我在 .NET 中执行完全相同的操作,则它可以工作)。
我想我需要做一个自定义声明,以便 VB 知道如何调用 C 函数,或者?
以下是 C 子/函数的声明方式。鉴于此,我需要做什么才能确保 C 能够正确使用我的空数组并且最终得到结果?
HRESULT InvokeAction(
[in] BSTR bstrActionName,
[in] VARIANT varInActionArgs,
[in, out] VARIANT *pvarOutActionArgs,
[in, out] VARIANT *pvarRetVal
);
有关此功能的更多信息:http://msdn.microsoft.com/en-us/library/aa382237(VS.85).aspx http://msdn.microsoft.com/en-us/library/aa382237(VS.85).aspx
Thanks
From http://msdn.microsoft.com/en-us/library/aa381230(VS.85).aspx http://msdn.microsoft.com/en-us/library/aa381230(VS.85).aspx:
Dim returnVal
Dim outArgs(1)
Dim args(1)
args(0) = 3
returnVal = service.InvokeAction("GetTrackInfo", args, outArgs)
'return Val now contains the track length
'and outArgs(0) contains the track title
Dim emptyArgs(0)
returnVal = service.InvokeAction("Play", emptyArgs, emptyArgs)
'returnVal indicates if the action was successful
不过,从这个示例中还不清楚如何获取服务实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)