【发布时间】:2021-04-15 13:07:50
【问题描述】:
已使用 复制了一个文件(来自文件资源管理器)。如果文件是图片(例如 JPG 格式),则文件的内容必须粘贴到 RichTextBox 中 - 类似于 Microsoft Word。 它已经实施并且没有任何问题 - 但仅限于本地。如果复制的文件位于远程桌面计算机上,则它不起作用。问题是:为什么?
复制/粘贴远程工作没有任何问题,例如可以复制/粘贴简单的文本(不是文件!)或图片(在 Paint 中打开)(已通过 Free Clipboard Viewer 4.0 检查)。
一些附加信息:
- 本地复制的文件
剪贴板包含数据“DataFormats.FileDrop”。 Clipboard.GetDataObject().GetFormats() 给出以下字符串数组:
[0] "Shell IDList Array"
[1] "DataObjectAttributes"
[2] "DataObjectAttributesRequiringElevation"
[3] "Shell Object Offsets"
[4] "Preferred DropEffect"
[5] "AsyncFlag"
[6] "FileDrop"
[7] "FileNameW"
[8] "FileName"
[9] "FileContents"
[10] "FileGroupDescriptorW"
可以使用Clipboard.GetFileDropList()[0](或FileNameW)获取整个路径,并且可以将图片导入到我的应用程序中。
- 远程复制文件
数据格式未知(在 DataFormats 类中找不到)。 Clipboard.GetDataObject().GetFormats() 给出以下字符串数组:
[0] "FileGroupDescriptorW"
[1] "FileContents"
[2] "Preferred DropEffect"
[3] "CanIncludeInClipboardHistory"
[4] "CanUploadToCloudClipboard"
使用“FileGroupDescriptorW”可以获得文件名(不包括路径)。只有文件名,没有任何路径信息(很可能本地有效的路径信息不会被远程感知)。
Clipboard.GetData("FileContents") 抛出异常: System.Runtime.InteropServices.COMException: '剪贴板上的数据无效(来自 HRESULT 的异常:0x800401D3 (CLIPBRD_E_BAD_DATA))'
但是远程复制的文件:
- 可以粘贴到本地文件系统中,或者
- 可以粘贴,例如进入微软 Word 没有任何问题。这意味着,复制文件的内容可以在剪贴板上找到 - 但无法访问。很可能“FileContents”应该适合获取它。
你有什么想法吗?
非常感谢。
【问题讨论】:
标签: c# exception clipboard remote-desktop