比较剪贴板中保存的数据
我正在使用此线程中的代码来捕获剪贴板更改。
我到底是什么或者代码到底在做什么是,为我的应用程序注册一个剪贴板查看器,以便能够捕获所做的所有剪贴板更改。
一旦剪贴板更改,WndProc 将触发并运行 OnClipboardChanged() 函数。
我正在使用键盘快捷键 (Ctrl+C) 从 Visual Studio 复制文本作为示例。
当我从 Visual Studi 复制时,数据将被粘贴两次,这意味着 WM_DRAWCLIPBOARD 被调用两次?(请检查代码)
我如何检查或停止此行为?
我只是想确保粘贴的数据不会重复。?
I am using the code in this thread to catch the Clipboard changes.
what iam exactly or what the code is exactly doing is, registering a clipboardviewer for my application to be able to catch all the clipboard changes made.
once the clipboard changes the WndProc will fire and run the OnClipboardChanged() function..
iam copying the text from visual studio as example by using the keyboard shortcut (Ctrl+C)
When I copy from Visual Studi,, the data will be pasted twice, which means the WM_DRAWCLIPBOARD is called twice?(please check the code)
How can i check or stop this behaviour?
I just want to make sure that the data pasted won't be duplicated.?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以存储正在复制的数据的哈希码,并查看最后一个是否匹配。这是一个未经测试的文本数据对象示例:
我不确定一般情况下执行此操作的最佳方法,您始终可以使用
GetFormats()
并检索所有格式+哈希对并使用因为我不确定不同格式之间不会发生冲突。You could store the hash code of the data being copied and look if the last one match. Here's an untested example for text data objects:
I'm not sure of the best way to do it in generically, you could always use
GetFormats()
and retrieve all format+hash pairs and do the lookup with them as I'm not sure there can't be clashes across different formats.我知道这是剪贴板链中某个地方的已知错误。针对这种行为,您可以简单地做的就是过滤这些伪调用。我只是在检查通话之间的时间间隔是否是人为的。就这样:
I know that this is an known error somewhere in the ClipboardChain. What you can simply do against this behavior is filter those pseudo calls. I am just checking if the timespan between the calls seems to be human. here it goes: