即时使用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”为空。 再次,这完全适用于所有其他窗口浏览器拖放
答案 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设备,也不能保证其他类型的设备能够以这种方式工作。我担心这可能很难实现,我希望这些信息对你有用。