1

我正在尝试使用适用于 C#(.Net 4)的 WindowsAPICodePack 实现文件系统浏览器,它运行良好,除了 ShellObject 系统将 zip 文件视为文件夹,而我更喜欢它们是文件。有什么办法可以强迫它以这种方式工作吗?它所做的低级互操作超出了我的范围。

据我所知,它在内部询问该项目是文件夹还是文件系统元素。然后它使用这个(和一些类型检查)来找出它实际上是什么。如果它是压缩的,强制它把它当作一个文件是否安全?还是我必须做其他事情?

4

1 回答 1

1

好的,首先,我看到 call 中有一个ShellNativeMethods.SFGAO标志SFGAO_COMPRESSED。这似乎并没有真正出现过,也许它已被弃用?

失败了,我最终只是作弊并在 ShellObjectFactory.cs 中执行了以下操作:

以下:

// Is this item a Folder?
bool isFolder = (sfgao & ShellNativeMethods.SFGAO.SFGAO_FOLDER) != 0;

我补充说:

// Is this a compressed Folder?
bool isCompressedFolder = (itemType == ".zip");

然后我换了

else if (isFolder)

else if (isFolder && !isCompressedFolder)

这是一个完全的hack,但它似乎有效,所以除非有人有更好的主意,否则我会坚持这一点。希望它会在未来帮助其他人,WindowsAPICodePack 上的帖子似乎很少见。

于 2010-05-26T01:20:04.693 回答