想要复制指定格式的数据 如:带格式的html文本 带格式的excel数据 任何聊天程序的复杂数据.... 看着一个教程就够了本来不想发这个帖子的 我记得之前也有很多复制QQ图文数据的源码 但是这里还是重新写一下 我觉得思路真的很简单 但是不知道为什么有人会跟我杠
1.复制原始数据
想办法得到一个你要复制的数据格式,这里既然要做QQNT的聊天所以需要在QQ中发送或者输入一条示例文本然后复制
这里在QQ聊天框输入内容
这时候可以直接复制也可以发送后复制,只要确定复制后粘贴到这里依然可以正常读取即可
2.获取剪辑板原始数据
变量名 | 类 型 | 静态 | 数组 | 备 注 | clipboarDataArray | 剪辑版数据 | | 0 | i | 整数型 | | | 剪辑板_取所有内容 (clipboarDataArray ) 计次循环首 (取数组成员数 (clipboarDataArray ), i )调试输出 (clipboarDataArray [i ].剪辑版数据格式, clipboarDataArray [i ].字节集长度, clipboarDataArray [i ].文本型数据 )计次循环尾 ()
可以得到以下数据
此处根据字节集长度来看,明显不是图片数据,如果是图片数据字节集长度不会这么短
那么这时候就用 到文本 / utf8转ansi / unicode转文本 得到明文数据 90%的数据用utf8存取 剩下少部分为 unicode或者明文存取 这里要注意 utf8转ansi 和 到文本 如果在没有中文或者一些外国语言的情况下获取的数据是一样的 尽量复制带中文的数据来获取
再次修改上面的代码改为
变量名 | 类 型 | 静态 | 数组 | 备 注 | clipboarDataArray | 剪辑版数据 | | 0 | i | 整数型 | | | 剪辑板_取所有内容 (clipboarDataArray ) 计次循环首 (取数组成员数 (clipboarDataArray ), i )调试输出 (clipboarDataArray [i ].剪辑版数据格式, clipboarDataArray [i ].字节集长度, clipboarDataArray [i ].文本型数据 )调试输出 (编码_Utf8到Ansi (clipboarDataArray [i ].字节集数据 )) 计次循环尾 ()
数据1、2得到两串明文数据 3、4 为乱码数据
因为格式文本复制到这里会无法展示 所以使用图片显示
其实这里也可以看的出来 数据1是QQ专用的复制格式 数据2是html的通用复制格式 是为了兼容添加的 我们只需要修改数据1中的数据复制即可 当然 更推荐修改第二种 一般主流的聊天工具都会兼容html QQ通用数据可能没有适配的那么好 当然 QQ和WeChat都是支持的 其他数据我们暂时不需要处理 只需要拷贝其中任何一条即可 如果出现问题再来处理其他的数据 一般哪怕你修改内容 也直接按照之前的数据置入即可 直接 调试输出(clipboarDataArray .字节集数据) 得到原始字节集数据 置入进去就好了
3.置剪辑板数据
既然得到格式了 稍作修改再置入即可 这里直接按照格式置入文本数据试一下
然后粘贴到QQ和WeChat 发现他并没有展示格式 只是展示了我们要复制的文本数据 说明理论可行 继续按照格式添加图片和内容
添加时发现格式非常简单 QQRichEditFormat 元素内 包含着 EditElement 元素
EditElement type 0 是文字 1是图片 按照格式进行拼接即可
因为格式文本复制到这里会无法展示 所以使用图片显示
发现粘贴后显示正常、发送展示正常完工
下面是源码:
demo.e
(958.59 KB, 下载次数: 109)
|