从Windows资源管理器ZIP预览中拖放WPF

relj7zay  于 12个月前  发布在  Windows
关注(0)|答案(1)|浏览(129)

我处理文件拖放从windows资源管理器到我的WPF应用程序(.NET 4.8)到目前为止,用简单的文件和使用DataObject.GetData(DataFormats.FileDrop)很好。但现在我想处理从文件拖放从zip文件打开作为预览在windows资源管理器(所以不解压)。
我没有找到任何与WPF,窗体或简单的C#在所有.对于Outlook附件我使用OutlookDataObject通过看到这项工作我想,对于我的情况下,我应该知道到底是什么格式使用的windows资源管理器与zip文件,我没有找到太多关于这一点,虽然。我可以与解压缩文件自己,并获得特定的文件,我需要在,但我不知道在哪里得到的路径父zip文件和文件的相对路径被D&D。
因此,如果有人已经有了解决方案,或者关于资源管理器在这种拖放过程中使用的格式的文档,或者检查DataObject以获得这些数据的方法,我会很高兴。

nwnhqdif

nwnhqdif1#

您可以使用FileGroupDescriptorW流获取zip存档中删除的文件的名称。OutlookDataObject可以为您做到这一点:

OutlookDataObject dataObject = new OutlookDataObject(e.Data);
string[] fileNames = dataObject.GetData("FileGroupDescriptorW") as string[];

字符串
没有办法使用此数据获取父zip文件的路径。您应该做的是获取删除的压缩文件的内容:

MemoryStream[] fileContents = dataObject.GetData("FileContents") as MemoryStream[];
if (fileContents.Length > 0)
{
    foreach (MemoryStream fileStream in fileContents)
    {
        // convert to string:
        using (StreamReader reader = new StreamReader(fileStream))
        {
            string text = reader.ReadToEnd();
        }
        fileStream.Dispose();
    }
}

相关问题