检测剪贴板上的任何图像 [英] Detect any image on clipboard

查看:34
本文介绍了检测剪贴板上的任何图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在,我想防止用户将带有任何类型图像的任何内容粘贴到富文本框中。Clipboard.ContainsImage不起作用,因为它只检测某些类型,如果剪贴板包含图像文本,则不会检测到它。

我需要的是一种方法来检测文本中的图像,单独的图像,多个图像...在剪贴板内,以便能够在发生这种情况时清除剪贴板。我需要避免这些大量内容才能到达数据库...

谢谢

推荐答案

问题不仅仅是阻止图像,因为rtf可以嵌入任何对象,包括Word文档或任意二进制数据。

我能想到的只有3个选项

  1. 限制您允许保存到数据库的最大数据大小,此时低于该大小的图像不会有问题,因为它在允许的大小内。

  2. 使用允许您解析和理解RTF内容的库,以便您可以检查除标准文本和格式之外的任何内容。然后,您可以去掉任何嵌入的二进制对象。或者,您可以处理WM_Paste并检查剪贴板中的RTF文本。如果它有RTF文本,你可以解析它,并在粘贴时而不是保存时剥离嵌入的对象。如果它没有RTF版本,请不要忘记检查它是否有纯文本版本。

  3. 拦截并处理WM_Paste消息,并使用RichTextBox.Paste(DateFormats)控制可以粘贴哪些数据类型。然后,您可以将其限制为仅将数据的纯文本版本粘贴到剪贴板上,该剪贴板不能包含嵌入的对象。此处的缺点是用户无法粘贴来自其他应用程序的格式化文本,所有格式都将丢失。

1是最简单的,但接受用户将能够嵌入小图像和其他小对象(如Word文档或视频),只要它低于最大大小。

2比较复杂,但提供了最佳的用户体验。

3比2简单,但提供的用户体验很差,就好像您不关心格式化文本就不会使用富文本框一样。除非您只需要纯文本并且使用的是其较大的文本容量,但如果是这种情况,您将只获取纯文本版本以保存到不包含图像的数据库中。

这篇关于检测剪贴板上的任何图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆