5

I made a browser program for a archive type with the .mpq extension, which is highly used in Blizzard games.
It is like an explorer but only explores files inside MPQ archives.
Now, we all know how Windows Explorer browses .zip archives and I'd love to make it open the .MPQ files with so many rich features.

Is this even possible? So it is possible...
If so, then how? Shell Folder...

Can someone please point me to an example? (C#) I can't just translate C++ to C#...

Raphaël Saint-Pierre
  • 2,498
  • 1
  • 19
  • 23
Vercas
  • 8,931
  • 15
  • 66
  • 106

2 Answers2

5

This is done via extending the shell classes. You'll need to implement the Basic Folder Object Interfaces to accomplish this.

Reed Copsey
  • 554,122
  • 78
  • 1,158
  • 1,373
  • Thank you! I will look at the link right away! Edit: That example is in C++ at which I am not very skilled. May you give me or point me to an example or a COM interface library? – Vercas Nov 20 '10 at 20:07
  • @Vercas: No. Unfortunately, this is a quite advanced set of COM interfaces that need to be implemented. I've only seen it done in C++, since prior to .NET 4, using .NET was a very bad idea (since it's an in-proc shell extension). – Reed Copsey Nov 20 '10 at 22:37
  • I'll accept this answer anyway because it is right, after all. – Vercas Dec 02 '10 at 20:50
2

Although it is a C++ framework, there is a framework that implements exactly what you want, and that I have adapted with success for a similar file format: TarFolder (by the guy who developed GMail Drive).

You may also be interested in EZNamespaceExtension.Net, even if they do not support extension-based rooting (a workaround is to use URLs with specific protocols).

Finally, check out WindowsShell: it might be exactly what you are looking for !

Sorry for coming so late after the storm...

Raphaël Saint-Pierre
  • 2,498
  • 1
  • 19
  • 23
  • OH MY GAWD. Thanks for the program! I totally needed something like that! I'll try to dissect the source code and make it use my C# library instead of it's own TAR functions! – Vercas Apr 28 '11 at 11:30
  • @Vercas That should work :) . However, I think you have to use .Net 4.0 as this is the only version of the framework than allows other versions to be used concurrently within the same process (unless you're totally sure your DLL is the only managed one). – Raphaël Saint-Pierre Apr 28 '11 at 13:00
  • @Vercas However, make sure your functions (especially the ones that list and describe files) are very fast, as they tend to be called quite often. Rewrite them in C++ as soon as you have a working C# version. – Raphaël Saint-Pierre Apr 28 '11 at 13:03
  • @Vercas: check my edit ! I've found something even closer to your needs (I think) ! However, it does not implement modifying the archive. (and you can change the accepted answer :p) – Raphaël Saint-Pierre Apr 28 '11 at 13:26
  • This is awkward... I will try WindowsShell! – Vercas May 11 '11 at 11:48