dll中VB6的代码:

Clipboard.SetText Addr

主程序中VB2010代码:

ProductInfo = Clipboard.GetText()

-----------------------------

看起来很正常的一段代码,一边放入剪贴板,一边取出。。。但是,事实上确实在XP下运行正常,一到WIN7就不行!

仔细去查VB6和VB2010中的Cilpboard的介绍,关于DataFormat

VB6有3种:

@H_404_69@

VB2010则有5种:

常数 描述
vbCFLink &HBF00 DDE 对话信息
vbCFText 1 (缺省值)文本
vbCFRTF &HBF01 RTF(.rtf 文件
@H_404_69@

很明显VB2010增加了2种,其中新增了一个UnicodeText。那么问题就清晰了...

VB6的SetText放入的格式只能是唯一的格式Text(即ANSI Text),但是在VB2010中,就有2种可能ANSI Text或Unicode Text

在XP下一切正常,表明VB2010的GetText是以ANSI Text的格式从剪贴板中取出的。但在WIN7下乱码了。。。表明它是以Unicode Text格式取出的。。。放入ANSI取出Unicode,不乱才怪

于是,将VB2010中的代码稍作修改:

ProductInfo = Clipboard.GetText(TextDataFormat.Text)

再试着运行一下,不论是XP还是Windows7,一切正常!

------------------------------------

此BUG给我们的2点启示是:

1. 从VB6升级到VB2010吧。。它更“真”地支持Unicode --- 关于为什么用真,有玄机哦~ :)

2. 从XP升级到WINDOWS7吧。。它默认就Unicode。。Unicode才是王道!

猜你在找的VB相关文章

成员名称 说明
CommaSeparatedValue 指定以逗号分隔值 (CSV) 的格式,这是电子表格常用的交换格式。
Html 指定由 HTML 数据组成的文本。
Rtf 指定由 RTF 数据组成的文本。
Text 指定标准 ANSI 文本格式。
UnicodeText 指定标准 Windows Unicode 文本格式。