是否可以将宽NULL字符传递给ActiveX?

时间:2014-09-24 02:46:18

标签: javascript vbscript com activex bho

[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"

2 个答案:

答案 0 :(得分:0)

unescape正确处理%u0000WScript.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所以不需要指定前导空字节。

但是,空值可能会导致其他程序或组件出现问题。