将字节数组复制到剪贴板

Copy byte array into clipboard

我正在尝试开发一个可以共享剪贴板内容的客户端-服务器程序。

现在,无论内容类型是音频、图像还是文本,我都可以分享。 我的想法是,我将内容转换为字节数组,发送它,将其转换回其原始类型(StreamBitmapSourcestring),然后将其注入到客户端剪贴板中使用方法 Clipboard.SetAudioClipboard.SetImageClipboard.SetText.

我的问题是剪贴板中有一些文件。我使用 Clipboard.GetFileDropList 方法获取文件列表,对于列表中的每个文件,我将其转换为字节数组并将其发送给客户端。如何在客户端剪贴板中注入这个字节数组?

我知道有方法Clipboard.SetFileDropList,但它需要我提供一个文件列表,因为客户端不存在该文件,所以我无法使用它。

我该如何解决这个问题?

为了让客户端将文件视为可粘贴的,它们需要以某种方式存在于客户端文件系统中,因为剪贴板在设置剪贴板内容时需要一个文件名列表。

这可以通过将数据作为流传输到您的客户端,然后让客户端立即将该流解压缩到一个临时文件夹来完成,该文件夹的路径可通过以下方式获得:

var temp = Environment.ExpandEnvironmentVariables("%TEMP%");

完成并放置文件后,您可以将这些文件放置在剪贴板上,就好像它们是复制的文件一样。

请注意,支持文件 copy/paste 而不是 "transfer" 文件的选项可能 运行 比其他操作慢得多,因为文件可以变得很大。