作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个程序,需要能够从远程计算机复制粘贴到我的本地计算机。
我的问题是,当我使用
Clipboard.GetDropList();
无论我尝试复制多少元素,它都会返回一个包含 0 个元素的集合。
我尝试过:
if (Clipboard.ContainsFileDropList())
{
foreach (string item in Clipboard.GetFileDropList())
{
File.Copy(item, path + '\\' + Path.GetFileName(item));
}
}
我也试过(BoltBait's answer):
System.Collections.Specialized.StringCollection idat = null;
Exception threadEx = null;
Thread staThread = new Thread(
delegate ()
{
try
{
idat = Clipboard.GetFileDropList();
}
catch (Exception ex)
{
threadEx = ex;
}
});
staThread.SetApartmentState(ApartmentState.STA);
staThread.Start();
staThread.Join();
两个版本都返回一个空集合。
问题可能来自哪里?知道:
最佳答案
得到空集合的原因是剪贴板不包含 DataFormats.FileDrop
中的任何数据。格式。
相反,在通过远程桌面复制远程机器上的一些文件时(启用剪贴板共享时),文件内容将直接放在剪贴板中。剪贴板将包含以下格式的数据:
FILEGROUPDESCRIPTOR
(实际上,FILEGROUPDESCRIPTORA
或 FILEGROUPDESCRIPTORW
,在您的系统上 - 第二个)CFSTR_FILECONTENTS
CFSTR_PREFERREDROPEFFECT
因此理论上您可以尝试遍历 FILEGROUPDESCRIPTOR
对象并存储从剪贴板读取其 CFSTR_FILECONTENTS
的每个文件。
但是我找到了一个bug report描述这仅适用于 Windows 窗体中的第一个文件。因此,您必须通过调用 native 方法使用 P/Invoke 来实现它。
关于c# - 为什么 Clipboard.GetFileDropList() 在远程桌面上返回一个空集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46194015/
我有一个程序,需要能够从远程计算机复制粘贴到我的本地计算机。 我的问题是,当我使用 Clipboard.GetDropList(); 无论我尝试复制多少元素,它都会返回一个包含 0 个元素的集合。 我
当您从 Windows Explorer 剪切/复制文件时,您可以通过 Clipboard.GetFileDropList 获取该文件列表方法。 您如何确定该列表是否来自剪切或复制操作或通知另一方剪切
我是一名优秀的程序员,十分优秀!