Pregunta

He escrito una extensión de Explorer para mostrar mi formato de archivo personalizado en el panel de vista previa. Esto funciona bien en Windows 7, pero no parece funcionar en Vista. La misma DLL maneja las miniaturas y el panel de vista previa. El lado de las miniaturas de las cosas funciona tanto en Vista como en Windows7.

Agregar registros a mi código, Vistas solo llamando a mi función dllgetClassObject para la clase de miniatura, no la clase de controlador de vista previa.

¿Hay algo obvio que Vista hace de manera diferente a Windows7 al llamar a COM DLLS?

Aquí están los valores que estoy agregando al registro:

HKEY_CLASSES_ROOT\\.<myext>\\(default) = "<myext>.Thumbnail.Handler.1"
HKEY_CLASSES_ROOT\\<myext>.Thumbnail.Handler.1\\ShellEx\\{8895b1c6-b41f-4c1c-a562-0d564250836f}\\(default) = "<myguid>"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\(default) = "<myext> Preview Handler"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\DisplayName = "@ExplorerPreviewHandler.dll,-101"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\Icon = "@ExplorerPreviewHandler.dll,201"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\AppID = "{6d2b5079-2f0b-48dd-ab7f-97cec514d30b}"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\InProcServer32\\(default) = "<path to my dll>"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\InProcServer32\\ThreadingModel = "Apartment"
HKEY_CLASSES_ROOT\\CLSID\\<myguid>\\InProcServer32\\ProgID = "<myext>.Thumbnail.Handler.1"
HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\PreviewHandlers\\<myguid> = "<myext> Preview Handler"},

Dado que mi DllGetClassObject no se llama, supongo que el problema debe tener algo que ver con lo que estoy configurando en el registro. Sé que las exportaciones de DLL están bien, ya que funciona para las miniaturas en Vista y Win7, y funciona para el panel de vista previa en Windows7.

DLL es X64, al igual que mi Vista y Win7 Oss. DLL está escrito en C ++ sin ATL.

Gracias por cualquier ayuda con esto, Dan.

¿Fue útil?

Solución

El REG se ve bien, solo falta el Progid predeterminado. Win7 tiene un comportamiento alternativo documentado para la ubicación de la tecla PreviewHandlers. Desafortunadamente, los documentos de SDK no dicen lo que Vista requiere. Un tiempo de vista Artículo de revista Utiliza HKLM en lugar de HKCU. Apuesto a que eso es todo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top