c# - 将字节数组复制到剪贴板

标签 c# file bytearray share clipboard

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

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

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

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

我该如何解决这个问题?

最佳答案

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

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

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

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

请注意,支持文件复制/粘贴而不是“传输”文件的选项可能会比其他操作运行得慢得多,因为文件会变得很大。

关于c# - 将字节数组复制到剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29701491/

相关文章:

c# - 如何右对齐 StatusStrip 中的控件?

C++ Linked List -- 读取文件并根据数字对其进行排序

c# - 在C#.net 4中读取/写入字节数组

c# - 桌面应用程序 : Architectural Frameworks?

c# - 找不到 ASP.NET Core 2 MySQL 8.0.8-dmr Entity Framework 扩展

c# - MEF 容器层次结构和 GetExports<T>

file - 转到 : concatenate file contents

java - Path.toFile() 和 new File(pathString) 的不同行为

java - 使用 Java 获取 Unix 时间中的日期时间作为大小为 4 字节的字节数组

c++ - 从 C++ 将字节数组传递给 lua 脚本方法