C#操作剪切板时复制文字经常出错 复制图片就没问题

b2668514865 2017-04-18 04:27:00
纠结了好久,不知道是什么情况,求助大神. 多次复制图片没问题,换成复制文字就经常报
System.Runtime.InteropServices.ExternalException (0x800401D0): 所请求的剪贴板操作失败。
是文字需要什么格式会好一点吗?拜托
Clipboard.SetDataObject(image, true, 5, 0);
Clipboard.SetDataObject(text, true, 5, 0);
...全文
986 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jesse_Demo 2017-08-04
  • 打赏
  • 举报
回复
我也遇到了从剪贴板取数据报错的问题,你解决了吗
b2668514865 2017-04-19
  • 打赏
  • 举报
回复
嗯嗯,我已经发现这个问题了Clipboard.SetDataObject(text, true,10, 50); 已经改成这样了,情况比之前好了。谢谢
Forty2 2017-04-19
  • 打赏
  • 举报
回复
引用 3 楼 b2668514865 的回复:
现在发现发图片也有问题,不过没有string那么频繁 ...
0x800401D0是CLIPBRD_E_CANT_OPEN。 由于ClipBoard Api设计(以现在的眼光可能不太好),同一时间整个系统只能有一个程序打开ClipBoard。其他程序碰到CLIPBRD_E_CANT_OPEN就只能停一会,然后重试。 同样,DotNet的ClipBoard操作内部也用上了重试。这就是那些retryXXX参数SetDataObject(object data, bool copy, int retryTimes, int retryDelay)的作用。 你代码里允许5次重试,暂停却为0。把它改为10或20毫秒将会有效减少你看到CLIPBRD_E_CANT_OPEN的几率。 Clipboard.SetDataObject(text, true, 5, 10);
b2668514865 2017-04-19
  • 打赏
  • 举报
回复
自己顶一下 别沉了 对于剪切板这一块操作有有心得的大神吗
b2668514865 2017-04-19
  • 打赏
  • 举报
回复
不好意思 搞错了 不是没有复制 而是SendKeys.SendWait("^v"); 复制这个操作没有生效
b2668514865 2017-04-19
  • 打赏
  • 举报
回复
感觉要沉了 再发一下
b2668514865 2017-04-18
  • 打赏
  • 举报
回复
现在发现发图片也有问题,不过没有string那么频繁 使用了Application.DoEvents();等待windows消息处理的api,不知道是心理感觉还是什么 感觉稍微好了点 不过还是会报错丢消息 为什么键盘直接ctrl+c那么流畅呢 我看有的用c#写的也很流畅,极少丢消息 。我感觉是c#底层方法Clipboard的问题吗 求助大神
b2668514865 2017-04-18
  • 打赏
  • 举报
回复
直接使用总是报错才换这个方法的。。。。
stherix 2017-04-18
  • 打赏
  • 举报
回复
文本就直接使用Clipboard.SetText啦

111,092

社区成员

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

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

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