gpt4 book ai didi

c++ - 将 COM 对象返回给 JScript

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:00:19 25 4
gpt4 key购买 nike

我正在尝试将 COM 对象从 ActiveX 组件传递到 JScript。到目前为止,我已经尝试了以下方法:

STDMETHODIMP CHSNetwork::CreateIPPPacket(VARIANT ** ppv)
{
IIPPacket *iipp;
HRESULT hr = CoCreateInstance(CLSID_IPPacket, NULL, CLSCTX_ALL, IID_IIPPacket, (void **)&iipp);
if(SUCCEEDED(hr) && ppv)
{
CComVariant cvar((IUnknown *)iipp);
hr = cvar.Detach(*ppv);
}

return hr;
}

以下 JScript 导致错误 Variable uses an Automation type not supported in JScript:

var hsn = new ActiveXObject("ZIENetwork.HSNetwork");
var ipp = hsn.CreateIPPPacket();

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

啊。我得到了它。我需要传递 VARIANT * 而不是 VARIANT **。我想我仍然对指向指针的指针感到困惑,因为它与 COM 的返回值有关。

因此正确的代码是:

STDMETHODIMP CHSNetwork::CreateIPPPacket(VARIANT * ppv)
{
// TODO: Add your implementation code here
IIPPacket *iipp;
HRESULT hr = CoCreateInstance(CLSID_IPPacket, NULL, CLSCTX_ALL, IID_IIPPacket, (void **)&iipp);
if(ppv)
{
CComVariant cvar((IUnknown *)iipp);
hr = cvar.Detach(ppv);
}

return hr;
}

关于c++ - 将 COM 对象返回给 JScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3313777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com