您好,请问为什么BSTR*类型的传出参数,在javascript中无法用var 变量获得?但是在VB中可以用String变量获得?谢谢。
解决方案 »
- 关于MFC的一个小小问题
- 在网页开始执行js前得到某js函数的IDispatchEx对象
- 怎么合并两个系统?火急
- Unhandled exception in Poepoem.exe :0xC0000005 :Access Violation不知是什么意思
- 有关禁止在组合框中禁止输入数字问题
- 关于组播设置IP_MULTICAST_LOOP选项
- 高分求教:用#import方法调用com组件
- BSTR OLECHAR CString的关系
- 2011年大连IT俱乐部系列活动——中国物联网暨嵌入式现状及发展趋势开放论坛
- 有本事来看看ATL中的这道宏!
- 请问CFileDialog不使用构造器,如何指定默认的文件名?
- 如何在C++面调用JAVA的类?
我试了VARIANT* ,用VB的VARIANT类型也可以获得,但是用javascript的var就是不行,谢谢!
javascript:
var comObj=new ActiveXObject("ComXX.XX");
var strSn;
document.getElementById("Text1").value=comObj.GetXX(strSn);
alert(strSn);//undefineCOM:
接口: [id(5), helpstring("...")]
HRESULT GetXX([out] VARIANT* strSn,[out,retval] LONG* nReturnValue);
STDMETHODIMP CXX::GetXX(VARIANT* strSn,LONG* nReturnValue)
{
int rv=0;
char *pchSnA=NULL;
int snLen=0;
strSn->vt=VT_BSTR;
strSn->bstrVal=NULL;
.......
strSn->bstrVal=SysAllocString(CA2W(pchSnA).m_psz);
*nReturnValue=NETCA_COMKEYHANDLE_OK;
free(pchSnA);
return S_OK;
}
谢谢!
这个语句的GetXX返回值是LONG,也就是说把这个LONG值赋值给value属性了。单步跟踪一下GetXX方法。其实参数使用BSTR*在js中也应该是可以使用的,不知道组件的IDispatch::Invoke是如何实现的
alert(strSn);输出为undefine,这和VB相差很大 ,谢谢!