关于如何获取剪切板的多个图片处理

摘要:
如果要在剪贴板中放置图片,则只能在剪贴板中添加多张图片时定义剪贴板的新格式,并且只能通过引用其他人的定义来解释。虽然没有最终的解决方案,但当从办公室复制两张图片时,EnumClipboardFormats(格式){}是存储在剪贴板中的格式:;

  说实话真的没办法,剪切板是个很坑人的东西,它对于放进去的东西就是一次性,如果你想放进去一张图片,然后再塞一张,这是不可能的,但是如果对于不同格式,比如一个是图片格式,一个是文本格式,它是可以放多个不同格式的。

  这段时间我也是一直在研究如何来解决这个问题,可是得出来的结论就是:对于你想要将多个图片放在剪切板就只能自己新定义一个剪切板的格式,然后自己识别它,不要妄想其他人能够懂你的东西,不太现实,所以这种东西,就是你自己定义,你自己用的,当然其他的软件也是,对于这样的都是自己的定义,所以你想要支持他们的,就只能去拿人家的定义来自己解释出来。

  比如说 office 这个东西我就研究了很久,虽然没得出最后如何处理的方法,还是留下一些我的研究成果,帮助下。从office复制出两个图片时,它会扔出16个消息,先说这些消息是如何拿到的。

UINT format = 0;
char szFormatName[80];
LPCSTR lpFormatName;
while (format = ::EnumClipboardFormats(format))
{

}

   这样format 就是储存在剪切板中的格式。这些就是正常的格式,那么不正常的,也就是别人随便定义该怎么办呢。

提供了其他的方法:

1 while (format = ::EnumClipboardFormats(format))
2 {
3     int iformat = ::GetClipboardFormatNameA(format, szFormatName,
4     sizeof(szFormatName));
5     lpFormatName = szFormatName;
6 }

  这里的iformat 就是随便定义的格式,GetClipboradFormatNameA 这个方法很重要,它会拿出不是正常的系统类型,要是正常的类型时会返回0,也就是iformat会等于0,而且要视情况使用,当初我就是用GetClipboradFormatName 得不到数据,这个lpFormatName 就是用来存储对应的指针,数据应该就是从这里拿出去。

  再说说 office的那个两张图片的数据格式:(负值是我自己写上,用来区分自己定义和系统定义的)

类型名类型整型值系统新类型名
DataObject10 
Object Descriptor17 
Rich Text Format16 
HTML Format 11 
HTML Format-13CF_UNICODETEXT
HTML Format-14CF_ENHMETAFILE
HTML Format-3CF_METAFILEPICT
Embed Source12 
Native6 
OwnerLink9 
Link Source11 
Link Source Descriptor22 
objectLink10 
Hyperlink9 
Ole Private Data16 
Ole Private Data-16 CF_LOCALE
Ole private Data-7 CF_OEMTEXT

  这就是office 给出来的格式,我大概也就到这步了,我是不知道该用什么样的办法,来将他们中的图片格式显示出来,要研究出来可能要更久,暂时放弃了,如果有什么新的办法可以留言的。

提供一些剪切板操作的参考网站:(太多了,我就贴个图,自己Google 或者百度)

关于如何获取剪切板的多个图片处理第1张

  

免责声明:文章转载自《关于如何获取剪切板的多个图片处理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇分布式任务调度XXL-JOB初体验Debian下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

静态代理和动态代理的区别

什么是静态代理: 打一个最简单的比方,我现在想要学习,那么就必须得把书包拿过来,把书掏出来,准备好纸笔,然后开始学习,等学完了我还得收拾书,把书塞回书包里,还得整理一下书包,这是一个完整的学习的过程,但是我很懒,不想动弹,只想学习,那可能就得让妈妈帮我把书包拿过来,把书打开,我只管学习就好了,学完以后,妈妈再帮我把书整理好放回去.(我这是打个什么破比方.....

数据可视化基础专题(44):NUMPY基础(9)数组操作(1)修改数组形状/翻转数组

1 修改数组形状 函数 描述 reshape 不改变数据的条件下修改形状 flat 数组元素迭代器 flatten 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组 ravel 返回展开数组 numpy.reshape numpy.reshape 函数可以在不改变数据的条件下修改形状,格式如下: numpy.reshape(a...

网络爬虫必备知识之requests库

就库的范围,个人认为网络爬虫必备库知识包括urllib、requests、re、BeautifulSoup、concurrent.futures,接下来将结对requests库的使用方法进行总结 1. requests库简介   官方中文文档:http://docs.python-requests.org/zh_CN/latest/user/quickst...

Chord算法实现具体

背景 Chord算法是DHT(Distributed Hash Table)的一种经典实现。下面从网上无节操盗了一段介绍性文字: Chord是最简单。最精确的环形P2P模型。“Chord”这个单词在英文中是指“弦”,在分布式系统中指“带弦环”,在P2P领域则指基于带弦环拓扑结构的分布式散列表(DHT)或者构建与其上的P2P网络。尽管MIT和UC Ber...

Xcode插件管理

 在使用Xcode的时候,公司同事使用/// 和//TODO 就能打出很多注释信息。虽然他们帮忙给我也装了,但是我却不知道怎么弄的。今天在家无聊,过来自己实践了一把。  so easy。 1.我使用的是Package Manager for Xcode。这时,我们要使用要将它下载下来,并且装入到Xcode里面。 原本以为会很繁琐,结果一句话就搞定了。 官网...

从js向Action传中文参数出现乱码问题的解决方法

Action获取jsp表单中的中文参数,只要整个项目都采用UTF-8编码格式都不会出现乱码问题;但JSP中用到JS,并从JS向Action传中文参数,就会出现中文乱的现象     做项目的时候,发现Action获取jsp表单中的中文参数,只要整个项目都采用UTF-8编码格式都不会出现乱码问题;但JSP中用到JS,并从JS向Action传中文参数,就会出现中...