Windows explorer has the ability to show thumbnails of files. These thumbnails are provided by core and third-party shell extensions.
I know how to extend the shell to provide thumbnails to Windows.
What I want to do is retrieve the thumbnail image from any file on the system via the shell using C#. Is this possible?
Essentially, I'm writing a custom file browser and I want to show thumbnails, and can't possibly parse every file on the planet to make my own thumbnails.
Many answers seem to be centered around web page thumbnails, or scaling an image. But that's not at all what I'm looking for. What I want is to ask Windows for the thumbnail representation of these file types: .DOC, .PDF, .3DM, .DWG... and mabye about a dozen more. I don't want to parse, render, and make thumbnails myself, because Windows already knows how.
The code I posted as an answer actually works... maybe it can be simplified and cleaned up a bit.
Ran across this today -- it's a few months old, but it got the job done for me (on Win7, extracting thumbnails on MPEG-4 files):
ShellFile shellFile = ShellFile.FromFilePath(pathToYourFile); Bitmap shellThumb = shellFile.Thumbnail.ExtraLargeBitmap;
Hope it helps!