将文件从设备复制到本地文件夹

时间:2012-05-30 08:37:24

标签: c# .net filesystems

即时使用string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); 将拖动的文件拖入我的应用程序并将其复制到不同的位置

我的应用程序似乎正在识别任何已投放的项目,除了源自设备(相机/智能手机等)的项目

我该如何解决这个问题并获取已删除项目的路径以便以后使用

FileSystem.CopyDirectory

这是我的代码的简短版本

private void Form1_DragDrop(object sender, DragEventArgs e)
        {
            string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
            FileInfo fileInfo;
                foreach (string file in files)
                {
                   fileInfo=new FileInfo(file);
                   FileSystem.CopyDirectory(fileInfo.FullName, target, UIOption.AllDialogs);
                }
        }

在调试时我可以看到“files”为空。 再次,这完全适用于所有其他窗口浏览器拖放

1 个答案:

答案 0 :(得分:0)

假设您的设备是使用ActiveSync或类似设备的Windows Mobile 6,设备的文件显示在shell命名空间中,但它们不是文件系统的一部分。因此,无法使用普通文件系统复制API复制它们。

可以通过以下方式获取Shell Id List来访问拖动的项目:

e.Data.GetData("Shell IDList Array") as System.IO.MemoryStream

这些可以使用SHGetPathFromIDList中的方法转换为路径,用于普通文件路径,我不确定这是否适用于设备路径。

最后,需要CeReadFile和相关函数才能从设备中读取文件以进行复制。

即使这一切都适用于Windows Mobile设备,也不能保证其他类型的设备能够以这种方式工作。我担心这可能很难实现,我希望这些信息对你有用。