将字节数组复制到剪贴板
Copy byte array into clipboard
我正在尝试开发一个可以共享剪贴板内容的客户端-服务器程序。
现在,无论内容类型是音频、图像还是文本,我都可以分享。
我的想法是,我将内容转换为字节数组,发送它,将其转换回其原始类型(Stream
、BitmapSource
或 string
),然后将其注入到客户端剪贴板中使用方法 Clipboard.SetAudio
、Clipboard.SetImage
或 Clipboard.SetText
.
我的问题是剪贴板中有一些文件。我使用 Clipboard.GetFileDropList
方法获取文件列表,对于列表中的每个文件,我将其转换为字节数组并将其发送给客户端。如何在客户端剪贴板中注入这个字节数组?
我知道有方法Clipboard.SetFileDropList
,但它需要我提供一个文件列表,因为客户端不存在该文件,所以我无法使用它。
我该如何解决这个问题?
为了让客户端将文件视为可粘贴的,它们需要以某种方式存在于客户端文件系统中,因为剪贴板在设置剪贴板内容时需要一个文件名列表。
这可以通过将数据作为流传输到您的客户端,然后让客户端立即将该流解压缩到一个临时文件夹来完成,该文件夹的路径可通过以下方式获得:
var temp = Environment.ExpandEnvironmentVariables("%TEMP%");
完成并放置文件后,您可以将这些文件放置在剪贴板上,就好像它们是复制的文件一样。
请注意,支持文件 copy/paste 而不是 "transfer" 文件的选项可能 运行 比其他操作慢得多,因为文件可以变得很大。
我正在尝试开发一个可以共享剪贴板内容的客户端-服务器程序。
现在,无论内容类型是音频、图像还是文本,我都可以分享。
我的想法是,我将内容转换为字节数组,发送它,将其转换回其原始类型(Stream
、BitmapSource
或 string
),然后将其注入到客户端剪贴板中使用方法 Clipboard.SetAudio
、Clipboard.SetImage
或 Clipboard.SetText
.
我的问题是剪贴板中有一些文件。我使用 Clipboard.GetFileDropList
方法获取文件列表,对于列表中的每个文件,我将其转换为字节数组并将其发送给客户端。如何在客户端剪贴板中注入这个字节数组?
我知道有方法Clipboard.SetFileDropList
,但它需要我提供一个文件列表,因为客户端不存在该文件,所以我无法使用它。
我该如何解决这个问题?
为了让客户端将文件视为可粘贴的,它们需要以某种方式存在于客户端文件系统中,因为剪贴板在设置剪贴板内容时需要一个文件名列表。
这可以通过将数据作为流传输到您的客户端,然后让客户端立即将该流解压缩到一个临时文件夹来完成,该文件夹的路径可通过以下方式获得:
var temp = Environment.ExpandEnvironmentVariables("%TEMP%");
完成并放置文件后,您可以将这些文件放置在剪贴板上,就好像它们是复制的文件一样。
请注意,支持文件 copy/paste 而不是 "transfer" 文件的选项可能 运行 比其他操作慢得多,因为文件可以变得很大。