我有一个程序,需要能够从远程计算机复制和粘贴到我的本地计算机。
我的问题是,当我使用
Clipboard.GetDropList();
它返回一个包含0个元素的集合,无论我尝试复制多少个元素。
我已经尝试过以下方法:
if (Clipboard.ContainsFileDropList())
{
foreach (string item in Clipboard.GetFileDropList())
{
File.Copy(item, path + '\\' + Path.GetFileName(item));
}
}
我也尝试过(BoltBait的答案):
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();
两个版本都返回一个空集合。
问题可能来自哪里?已知:
- 从远程复制/粘贴到本地(通过Windows)可以工作
- 从本地复制/粘贴到本地(通过代码)可以工作
- 剪贴板共享已激活
- 操作系统(本地):Windows 10
- 操作系统(远程):Windows Server 2008 R2
Clipboard
实现对此支持不够好。您必须切换到非托管方法 - 通过P/Invoke或创建自己的非托管模块。有关详细信息,请参见此主题。 - dymanoid