急!特急!C#不能清空OFFICE2010的剪贴板Clipboard

zm0081 2013-01-03 11:28:48
用C#开发Excel2010的VSTO项目,虽然使用了Clipboard.Clear(),但不能清空OFFICE2010的剪贴板Clipboard,现象是代码进行清空后,通过Clipboard.GetDataObject().GetFormats()方法查看已经没有可用数据类型了,但Excel的Sheet里边还能粘贴,另外通过FFICE2010的剪贴板监视窗口的清空button已经清空了窗口,但Excel的Sheet里边仍然能粘贴,不知什么原因,难道OFFICE2010没有和系统剪贴板进行交互管理?
...全文
533 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pcnetman 2014-03-25
  • 打赏
  • 举报
回复
用MSAA来做,刚写了个源码, 需要的话,可以加我QQ=696090。
threenewbee 2013-01-04
  • 打赏
  • 举报
回复
引用 4 楼 zm0081 的回复:
实在着急,再追述一点,就是我当前的问题能否通过代码实现对粘贴操作的控制,能否在给excel2010粘贴时,只能进行[值粘贴],也就是说,格式等信息都不要。 @@刚才想先给出一些分,但好像必须结贴后才可以,Sorry!给出方法即可结贴。
没用过VSTO,但是给你一个一般性的建议。你可以在Excel中录制一个宏,Excel支持只粘贴文本而不要格式的操作。你操作完了,再停止录制宏,打开VBA编辑器,看看生成的代码,照着写。
benbenRH 2013-01-04
  • 打赏
  • 举报
回复
实在不行时,你可以选择使用钩子!
zm0081 2013-01-04
  • 打赏
  • 举报
回复
实在着急,再追述一点,就是我当前的问题能否通过代码实现对粘贴操作的控制,能否在给excel2010粘贴时,只能进行[值粘贴],也就是说,格式等信息都不要。 @@刚才想先给出一些分,但好像必须结贴后才可以,Sorry!给出方法即可结贴。
zm0081 2013-01-04
  • 打赏
  • 举报
回复
非常感谢版主和lzxue1989的提示,我从现象看也觉得是office的自动维护等特殊处理,但因为客户以前用VBA可以控制剪贴板,这次VSTO的项目也非得要求能控制,还希望能提示一些可能的对应方法,如果绝对不可以,能否提示微软官方的说明资料,因为项目到了最后阶段,要给客户给出充分的理由才行,还烦请版主和各位大虾帮助。谢谢! @@小虫不才,找了许久也没有合适的能充分说明的资料。
csdn_风中雪狼 2013-01-04
  • 打赏
  • 举报
回复
Clipboard.Clear(),清空的是系统剪贴板, 而office是多重剪贴板,就像版主所说的一样,他会自动维护
zm0081 2013-01-04
  • 打赏
  • 举报
回复
十分感谢版主,录制宏的方法知道的,但这次项目是不允许使用宏的XLSX文件,单纯的C#代码; 另外通过宏可以控制Ctrl+V的处理,但右键菜单等其它操作客户还是可以选择的,没有可控制的方法,所以一直在找控制剪贴板的方法。
threenewbee 2013-01-04
  • 打赏
  • 举报
回复
没错,Office从2000开始,引入了多重剪贴板,它会维护系统剪贴板上的支持的剪贴项,而不受剪贴板本身制约。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧