剪贴板剪切/复制与粘贴文件+1个待解决的问题

现在网上大多数对剪贴板的操作都只是对文本进行操作,很少有对文件进行操作的,在codeProject上找到了解决方法,但还有一个问题困扰了我(等下再说,其实放在首页就是看看大家能不能帮忙解决)。

先看看具体的代码:

剪切/复制文件

void CopyToClipboard(bool cut)
{
    string[] files = GetSelection();
    if(files != null)
    {
        IDataObject data = new DataObject(DataFormats.FileDrop, files);
        MemoryStream memo = new MemoryStream(4);
        byte[] bytes = new byte[]{(byte)(cut ? 2 : 5), 0, 0, 0};
        memo.Write(bytes, 0, bytes.Length);
        data.SetData("Preferred DropEffect", memo);
        Clipboard.SetDataObject(data);
    }
}

对粘贴文件的处理:

粘贴文件的处理

private void pasteMenuItem_Click(object sender, System.EventArgs e)
{
    IDataObject data = Clipboard.GetDataObject();
    if (!data.GetDataPresent(DataFormats.FileDrop))
        return;

    string[] files = (string[])
      data.GetData(DataFormats.FileDrop);
    MemoryStream stream = (MemoryStream)
      data.GetData("Preferred DropEffect", true);
    int flag = stream.ReadByte();
    if (flag != 2 && flag != 5)
        return;
    bool cut = (flag == 2);
    foreach (string file in files)
    {
        string dest = homeFolder + "\\" + 
                      Path.GetFileName(file);
        try
        {
            if(cut)
                File.Move(file, dest);
            else
                File.Copy(file, dest, false);
        }
        catch(IOException ex)
        {
            MessageBox.Show(this, "Failed to perform the" + 
                " specified operation:\n\n" + ex.Message, 
                "File operation failed", 
                MessageBoxButtons.OK, MessageBoxIcon.Stop);
        }
    }

    RefreshView();
}

注意点:

一、把文件路径的列表SetData到剪贴板,注意一定要是数组形式。对一个文件进行操作也要以数组方式。

二、把标志信息也按照一定的格式SetData到剪贴板

问题:如果在windows mobile中,在移动设备里剪切/复制一个文件,发现在剪贴板中没有任何东西,而普通的windows文件则会有路径和标志位。现在的问题是如果从设备中剪切/复制文件,我怎么让PC能够进行粘贴,因为PC上是不认类似”\\application...“的路径的。

时间: 2024-12-31 01:53:22

剪贴板剪切/复制与粘贴文件+1个待解决的问题的相关文章

Winform调用系统的剪切,复制,粘贴文件功能

  // <summary> /// 复制或剪切文件至剪贴板(方法) /// </summary> /// <param name="files">需要添加到剪切板的文件路径数组</param> /// <param name="cut">是否剪切true为剪切,false为复制</param> public static void CopyToClipboard(string[] files,

如何与资源管理器互动剪切/拷贝/粘贴文件

一.本文将向读者介绍下面两个问题的解决方案: 1,用户在资源管理器(Windows Explorer)中剪切/拷贝(Cut/Copy)文件,然后在自己的应用程序中进行粘贴(Paste)操作: 2.用户在自己的应用程序中剪切/拷贝文件,在资源管理其中粘贴操作. 二.本文中的代码编写工具及测试环境: 1,VC6.0, Platform SDK(无须MFC): 2.Windows 2000. 三.概述 我们知道,在Windows中可以通过剪贴板(Clipboard)来共享和传递数据,比如在资源管理器(

电脑忽然不能复制粘贴文件如何解决

当我多次使用复制粘贴之后发现:我的电脑不能复制粘贴了,具体情况为: 1.不能复制粘贴网页内容. 2.不能复制粘贴Word,Excel等办公软件的文件内容. 3.不能复制粘贴文件. 4.当我复制内容时提示:"不能清除剪贴板". 出现不能复制粘贴的情况之后,我的工作几乎无法继续开展了,真是气煞我也!于是乎,我开始疯狂地寻找答案: 第一套方法:我尝试关闭所有办公软件,重新打开文件. 结果:仍然无法复制粘贴内容.---宣告失败 第二套方法:检查Word,Excel等办公软件的剪贴板,清除剪贴板

Win32开发入门(21):复制、粘贴及剪贴板操作

我要提醒一下大家,看了我的博文学到的知识,千万不要用于实际开发,不然你会被你的上司骂: "妈的,这些东西哪来的,从来没有人这样做过."不信你试试,脑细胞被冻结的经理或者技术总监们 肯定会这样说的. 如果是一些有X年工作经验(X永远不可能大于100)的程序员肯定会说:"你 怎么这么不成熟?"你如果被别人这么说之后,不知道你会不会很伤心,或者很生气? 我呢, 曾经被N个人这样教育过,不过你猜猜我当时的心情,我非常高兴,喜悦.为什么呢? 你不妨想 想,当一个人说你不成熟的

ios开发之Swift UIPasteboard剪贴板的使用详解(复制、粘贴文字和图片)

UITextField.UITextView组件系统原生就支持文字的复制,但有时我们需要让其他的一些组件也能实现复制功能,比如点击复制UILabel上的文字.UIImageView中的图片.UITableView里单元格的内容.或者点击按钮把文字或图片自动复制到粘贴板中等等. 这些我们借助 UIPasteboard 就可以实现. 一,将内容写入到剪贴板中 1,复制字符串 UIPasteboard.generalPasteboard().string = "欢迎访问 hangge.com"

jsp剪贴板的复制粘贴程序

import java.awt.*; import java.awt.event.*; import java.awt.datatransfer.*; import javax.swing.*; //剪贴板演示 public class ClipboardDemo extends JFrame implements ClipboardOwner{  Clipboard clipboard;  //剪贴板  JTextArea jtaCopyTo=new JTextArea(5,10); //用于

活用Office剪贴板 快速收集和粘贴多个项目

Office剪贴板使您可以从任意数目的Office文档或其他程序中收集文字和图形项目,再将其粘贴到任意Office文档中.例如,您可以从一篇 Microsoft Word 文档中复制一些文字,从 Microsoft Excel 中复制一些数据,从 Microsoft PowerPoint 中复制一个带项目符号的列表,从 Microsoft FrontPage 或 Microsoft Internet Explorer 复制一些文字并从 Microsoft Access 中复制一个数据表,再切换回

电脑远程登录时本机和远程机间不能直接复制粘贴文件

注意事项 只有本地和远程都是Windows7才可以直接复制.粘贴文件,Windows2003.WinXP不能直接复制.一般情况下:1.复制文件需要进行磁盘映射(XP. 2003.vista.2008都可以)2.剪贴板复制文字(剪贴板映射),不用磁盘映射,远程桌面默认是启用这个功能 解决办法 情形一:远程登录 Windows 7/Windows Vista 计算机 依次打开"开始->所有程序->附件",单击"远程桌面连接". 收起这个图片展开这个图片  

SQLPlus中的复制和粘贴技巧

技巧 SQLPlus中的复制和粘贴技巧 系统环境: 1.数据库: Oracle 8i R3 (8.1.7) for NT 企业版 说明: 方法一: 1.   将鼠标移至想要复制内容的开始 2.   用右手按下鼠标左键 3.   向想要复制内容的另一角拖动鼠标,与Word中选取内容的方法一样 4.   内容选取完毕后(所选内容全部反显),鼠标左键可以按住不动,也可以松开 5.   用左手按CTRL+C键(或用鼠标点击系统菜单上:编辑-复制-粘贴) 6.   这时,所选内容会被复制到剪贴板上,所选内