![剪贴板大小限制](https://linux22.com/image/1213215/%E5%89%AA%E8%B4%B4%E6%9D%BF%E5%A4%A7%E5%B0%8F%E9%99%90%E5%88%B6.png)
复制到剪贴板的数据大小有限制吗?我正在使用 VB6,需要将数据块复制到剪贴板。
答案1
要将某些内容添加到剪贴板,您需要先为数据分配内存,然后将此内存块的句柄传递给剪贴板。由于 WIN32 应用程序的内存限制为 2 GB,因此您可以分配的内存量与应用程序中仍可用的 RAM 大小有关。使用 boot.ini 中的附加 /3GB 参数,您可以将此数量稍微增加一些。如果您的系统 RAM 少于 2 GB,增加交换文件的大小也将有助于发送最多 2 GB。当然,客户端应用程序也需要能够使用这些数据。试图在只有 600 MB 可用内存的进程中发送 1500 MB 的数据是行不通的。
但是,如果您确实想发送大量数据,请使用临时文件!一个技巧是使用 COM 接口。首先创建您自己的 COM 类,该类需要包装数据,其中数据应基于文件。然后创建一个临时文件并将您的数据添加到此文件。创建一个链接到此临时文件的 COM 对象,并将 COM 对象发送到客户端。客户端也需要能够处理 COM 对象,但随后可以使用它来再次从中提取数据。理论上,这将为您提供无限的内存空间。缺点:您需要编写一个 COM 类并知道自己在做什么。
或者使用其他技术来发送数据。命名管道、邮件槽、TCP/IP... 有多种替代的进程间技术可用于在两个应用程序之间发送数据。
由于您使用的是 VB6,因此我不会开始讨论 .NET 或 WIN64 选项。
答案2
取决于系统中的内存量。
答案3
大多数数据都是作为参考而不是数据本身进行复制的,因此您可以复制任何大小的任何东西。但实际上复制的是文本,据我所知,数据量受限于当前可用的 RAM 数量。请记住,如果 vb6 可以处理它,我相信剪贴板也可以处理它。