我想要一个带有 ****.class*** ,****.jar*** 过滤器的打开文件对话框。我希望 *.jar 文件将被视为文件夹(按 OK 或双击应该显示 jar 文件内容 [ *.class] )。此功能与 TotalCommander 存档插件非常相似,可让您就地浏览存档文件(无需提取它们等...)
有什么想法可以做到吗?我可以使用已经实现的东西吗?
谢了,兄弟们
我想要一个带有 ****.class*** ,****.jar*** 过滤器的打开文件对话框。我希望 *.jar 文件将被视为文件夹(按 OK 或双击应该显示 jar 文件内容 [ *.class] )。此功能与 TotalCommander 存档插件非常相似,可让您就地浏览存档文件(无需提取它们等...)
有什么想法可以做到吗?我可以使用已经实现的东西吗?
谢了,兄弟们
要使用标准 Windows 资源管理器和常用对话框执行此操作,您需要编写或找到适当的 Shell 命名空间扩展。
shell 命名空间扩展是一个 COM 对象,它允许您在资源管理器 shell 中显示虚拟文件夹。因此,在您的情况下,shell 扩展将允许用户导航 jar 文件结构,就好像它位于您机器上的文件夹一样。
您可以使用托管代码编写 shell 扩展,但至少对于 4.0 之前的框架版本,MS 不支持此功能,因为将多个框架版本加载到进程中会产生冲突。现在 4.0 支持并排加载框架版本,也许这是支持的。
这是一篇关于编写 shell 命名空间扩展的文章的链接
http://msdn.microsoft.com/en-us/magazine/cc188741.aspx
我从未尝试过,但这是一个支持将 7-zip 支持的文件作为文件夹处理的扩展。如果您需要自己做这件事,也许这至少可以帮助您入门。
http://7zipshell.codeplex.com/
这里有一篇文章描述了在 C# 中打开 Jars:
http://www.codeproject.com/KB/files/opening_jars_cs.aspx
如果您将其与 Chris 关于编写扩展的回答结合起来,或者如果这样更容易编写自己的对话框,那么您应该能够做您想做的事情。