MIO Format Viewer?

Heyo!

over time I’ve gathered a bunch of those *.mio files on my systems. Now, as far as I understood it, these files are proprietary - at least I never happened to come across any other software that’s able to make sense of these files.

Is there a way to get a quick overview of these files like in viewers like FastStone or similar? I know that there is the Image Viewer program in which I can open the files fairly easily, but I still have to open every single file - what I’d like to have is something like a thumbnail viewer that lets me browse larger collections quickly… I haven’t found anything like that in the installed software - has anyone else come across something like this?

Hi @taserface,

Yes, you are correct: MIO is a proprietary binary format (basically a serialized object tree) and there is - also to my knowledge - no software available anywhere that is capable of loading *.mio files.

As it happens, I have played around a little with a Windows Explorer extension for roughly that purpose. It enables the Windows explorer to display thumbnails of MIO images in the various sizes that you can select for the previews.

The way this works is that when Windows Explorer comes across a MIO file for which it wants to have a thumbnail it invokes a method of a COM object that you can register for a particular file extension. In that function we simply get the content of the *.mio file and create a CVB image from it, then use ImageToDCEx to commit the image into an HBITMAP passed to us for exactly that purpose. The general approach is described in a little more detail here: Building Thumbnail Handlers - Win32 apps | Microsoft Docs.

However, there are a few kinks (which ultimately led to this shell extension remaining unpublished):

  • One of the most severe restrictions is the CPU architecture. They way they had to be implemented, to address all the back then relevant use cases our ActiveX controls prevent us from building an installer for :cvb: that installs the 32 and 64 bit version of CVB simultaneously. Thhis means: If I install the 32 bit version of :cvb: on a 64 bit machine, I won’t have the 64 bit builds of :cvb: available. The Shell extensions for the 64 bit Windows Explorer however will have to be a 64 bit application - so we are in a bit of a dead end here.
  • There were also performance concerns: MIO is - unlike jpg or png - not a format that you can use progressively. That means that for every thumbnail that I want to generate I will have to load the entire *.mio file and then write it to the Windows Explorer’s HBITMAP. It is obvious that when there are numerous extremely large *.mio files the generation of the thumbnails could become a bit of a performance hog.
  • Then there were also safety concerns. Windows Shell extensions that are not well-behaved are a major bummer for anyone who has installed one (and likely the source of quite a few complaints about the OS). With a possible release jeopardized by the first two bullet points I was reluctant to enter into a more significant release test on this extension.

That is in short(ish) words the reason why that extension was never published officially. However, with all these concerns duly noted, I can make the extension available here for anyone who wants to have a shot at it. Keep in mind that use of this component is strictly at your own risk, though…

To install the CvbShellExt.dll:

  1. Download the zip file (further down in this post) and copy the build that matches your OS and CVB architecture and copy it to a location of your preference (the CVB installation directory %CVB% is probably a good candidate…). The CvbShellExt.dll links the C++ runtime statically so no additional vcredist setup will be needed.
  2. Open a command line (either cmd.exe or PowerShell) with administrative privileges and navigate to the directory where you placed the CvbShellExt.dll.
  3. Enter the command C:\Windows\System32\regsvr32 .\CvbShellExtXX.dll where XX is either 32 or 64 depending on the OS architecture. Note that it is a good idea to spell out the complete path to regsvr32.exe on a 64 bit operating system as there are two builds (32 and 64 bit) of this tool available on 64 bit Windows…

That is basically it. Reboot your system and navigate to a folder that contains a *.mio file and you should see a thumbnail for it:

To put the Genie back into the bottle and get rid of the CvbShellExt.dll please…

  1. Open a command line - again with administrative privileges - and navigate once more to the folder where CvbShellExt.dll is located.
  2. Enter the command C:\Windows\System32\regsvr32 -u .\CvbShellExtXX.dll where XX again is either 32 or 64 depending on the OS architecture. This will remove the registation keys generated by the installation step and after a reboot the Windows Explorer will stop loading the CvbShellExt.dll.

:exclamation: Please note that the CvbShellExt.dll will need an existing :cvb: installation also for removing it. If :cvb: is no longer on the system loading this extension for any purpose will definitely fail, so do not uninstall :cvb: while the CvbShellExt.dll is still being used by the Windows Explorer!

With all these warnings off my chest now, here it is: CvbShellExt.zip (114.2 KB)

1 Like