[id(0x60020021), helpstring("method FileWriting")]
void FileWriting(
[in] BSTR buffer);
我希望能够将包含NULL字符的BSTR传递给ActiveX控件(这不是我的,所以我无法修改代码)。
代码中没有NULL过滤器只是使用WriteFile通过BSTR参数,但我怎么能将Wide NULL(0x 00 00)传递给ActvieX?可能吗?
obj.FileWriting(unescape("%u0041%u0042%u0043")) // working
obj.FileWriting(unescape("%u0041%u0000%u0043")) // not working, just "A"
答案 0 :(得分:0)
unescape
正确处理%u0000
,WScript.Echo
,MsgBox,以及 - 或许 - .FileWriting
不会:
>> s = unescape("%u0041%u0000%u0042")
>> WScript.Echo s, Len(s), LenB(s)
>>
A 3 6
答案 1 :(得分:-1)
BStr不关心他们是否有空值。在VB或VBS中chr(43) & vbnull & chr(43)
。一切都已经是unicode所以不需要指定前导空字节。
但是,空值可能会导致其他程序或组件出现问题。