2014-09-24 33 views
0
[id(0x60020021), helpstring("method FileWriting")] 
void FileWriting(
     [in] BSTR buffer); 

我想能够将包含NULL字符的BSTR传递给ActiveX控件(这不是我的,所以我不能修改代码)。是否可以将宽NULL字符传递给ActiveX?

代码中只有通过BSTR参数使用WriteFile没有NULL过滤器,但我怎么能通过宽NULL(0x 00 00)到ActvieX?这有可能吗?

obj.FileWriting(unescape("%u0041%u0042%u0043")) // working 

obj.FileWriting(unescape("%u0041%u0000%u0043")) // not working, just "A" 

回答

-1

BStr不关心他们是否有空值。在VB或VBS chr(43) & vbnull & chr(43)。一切都已经unicode,所以不需要指定前导空字节。

但是,空值可能会导致其他程序或组件无法预期的问题。

+0

是vbNull是一个整型常量与1 – 2014-09-24 09:44:32

+0

vbnullchar一个值,则 – Noodles 2014-09-24 09:57:12

0

unescape手柄%u0000正确,WScript.Echo,MSGBOX,和 - 也许 - .FileWriting别:

>> s = unescape("%u0041%u0000%u0042") 
>> WScript.Echo s, Len(s), LenB(s) 
>> 
A 3 6 
相关问题