C # obtener una miniatura del archivo a través de la API de Windows

El explorador de Windows tiene la capacidad de mostrar miniaturas de archivos. Estas miniaturas son proporcionadas por el núcleo y las extensiones de shell de terceros.

Sé cómo extender el shell para proporcionar miniaturas a Windows.

Lo que quiero hacer es recuperar la imagen en miniatura de cualquier archivo en el sistema a través del shell utilizando C #. es posible?

Básicamente, estoy escribiendo un explorador de archivos personalizado y quiero mostrar miniaturas, y no puedo analizar cada archivo del planeta para crear mis propias miniaturas.

Aclaración: muchas respuestas parecen estar centradas en las miniaturas de las páginas web o en la escala de una imagen. Pero eso no es en absoluto lo que estoy buscando. Lo que quiero es pedirle a Windows la representación en miniatura de estos tipos de archivos: .DOC, .PDF, .3DM, .DWG ... y mabye alrededor de una docena más. No quiero analizar, renderizar y hacer miniaturas, porque Windows ya sabe cómo hacerlo.

El código que publiqué como respuesta realmente funciona ... tal vez se pueda simplificar y limpiar un poco.

Respuestas a la pregunta(7)

Su respuesta a la pregunta