佚名通过本文主要向大家介绍了继承于IDispatch接口的组件方法中怎样传中间有'\0'结束符的字符串等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 继承于IDispatch接口的组件方法中怎样传中间有'\0'结束符的字符串
描述:
解决方案1:
描述:
有一个EXE的COM组件,它的接口继承于IDispatch,现在想在其中一个接口函数中传入一个字符串,但是该字符串可能包含有多个结束符'\0',例如
“test\0test\0test\0\0test”。
如果当作BSTR来传送的话,现在的处理是这样的:
在客户端:
BSTR l_bstrTemp = SysAllocStringLen("test\0test\0\0test", 长度);
在COM组件里面使用_com_util::ConvertBSTRToString(BSTR)转换和OLE2A转换,但是好象传入COM组件里面的BSTR参数是对的,转换后却成了乱码。
或者哪位能够通过其他方法传入有结束符的一串二进制字符流进入COM组件(继承于IDispatch的,自动化的不支持传入byte)。并且传入传出能够转换回来。
解决方案1:
找到解决方法了.
解决方案2:BSTR可以阿,直接用Win32 API转化