各位在使用VCL中的Clipboard时,有没有遇到"Cannot open clipboard"的问题(50分)

  • 主题发起人 TurboDog
  • 开始时间
T

TurboDog

Unregistered / Unconfirmed
GUEST, unregistred user!
具体是在使用RichEdit时, 先将RichEdit中的内容拷贝到剪贴板中
RichEdit->CopyToClipboard(), 做完某些处理后,再将其拷回RichEdit,
if (Clipboard()->HasFormat(CF_TEXT))
RichEdit->PasteFromClipboard()
一般情况下不会出错,但是如果长时间运行其它程序(可能涉及到对剪贴板的操作),
再运行RichEdit的拷贝操作,就经常会出现"Cannot open clipboard"的错误.
 
没人回答,只能自己给自己UP了
 
ClipBoard.Open;
..
ClipBoard.CLose;
 
to zjan521:
ClipBoard.Open 该操作会锁住剪贴板,造成其他程序不能存取剪贴板。
 
if (Clipboard()->HasFormat(CF_TEXT))
RichEdit->PasteFromClipboard()

你没有上下文,搞不懂,但这样写的语句当然应该禁止别人访问
满足了你的条件,那数据就是你的,自然要保护起来
你不阻止别人访问,自然不能阻止别人更改数据,

剪切板本来就不是很可靠的东西,如果交换数据的双方你都能控制,那么
改用其它的方法交换数据应当更好,
如WM_COPYDATA,内存映射等
 
顶部