加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 粘贴剪贴板中的文件

发布时间:2020-12-15 21:43:27 所属栏目:百科 来源:网络整理
导读:感谢Stack Overflow问题 Copy files to clipboard in C#,我能够使用 Clipboard.SetFileDropList并最终获得: using System;using System.Collections.Specialized;using System.Windows.Forms;class Program{ [STAThread] static void Main ( string[] args)
感谢Stack Overflow问题 Copy files to clipboard in C#,我能够使用 Clipboard.SetFileDropList并最终获得:

using System;
using System.Collections.Specialized;
using System.Windows.Forms;

class Program
{
    [STAThread]
    static void Main ( string[] args)
    {    
        StringCollection paths = new StringCollection();
        paths.Add( @"C:UsersAntonioDesktopMyDirectory" );
        Clipboard.SetFileDropList( paths);
    }
}

这样我就可以将整个目录放在剪贴板上并将其粘贴到我需要的位置.我希望能够用代码粘贴它.我不想去我要粘贴的地方,然后按Ctrl V.换句话说,我正在寻找类似的东西:

Clipboard.Paste("C:UsersLocationWhereIWantToPasteTheFolder")

我知道我可以递归地获取所有文件,然后逐个粘贴它们.但为什么重新发明轮子?如果操作系统可以为我做这件事会很好……

解决方法

剪贴板有一个协议,一种双方同意的方式将数据从一个进程传递到另一个进程.这样的协议需要有限的方法将合理的数据放在剪贴板上.你可以把任何你想要的东西放在剪贴板上,特别是.NET对象.但是,如果粘贴剪贴板数据的其他应用程序不能理解.NET对象,很可能如果它不是用.NET编写的话那么它只会惊叹于WTF.

所以你使用的方法只是一个小的Clipboard类辅助方法,它使用标准协议将数据放在剪贴板上.另一个应用程序很可能理解,但不能保证.该协议是DataFormats.FileDrop.

您的预期替换也可以正常工作,您当然可以在剪贴板上放置一个字符串.你想要复制/粘贴的最基本的东西.但粘贴它的应用程序只会将其识别为字符串.它不知道该字符串应该意味着别的东西.协议是DataFormats.Text.

解决方案非常简单,只需编写一个带字符串的私有辅助方法.并使用Directory.GetFiles()创建放在剪贴板上的StringCollection.简单,任务完成,亲吻.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读