Pregunta

He creado una extensión de shell de Windows con ATL (Visual Studio 2008). Tiene los siguientes módulos y cada módulo es un objeto simple ATL independiente con su propio archivo .rgs para el registro: -

  1. IShellFolder / IShellView - > Para una unidad virtual en Windows Explorer
  2. IContextMenu / IShellExtInit - > Para los archivos y carpetas de un menú emergente
  3. IShellIconOverlayIdentifier: para mostrar iconos de superposición en archivos y carpetas
  4. IShellPropSheetExt / IShellExtInit - > Para una página de propiedades personalizadas en Archivo & amp; Propiedades de la carpeta

El trabajo anterior funciona bien en WinXP y puedo depurar esta extensión de shell en WinXP. Pero tan pronto como me cambio a Vista, solo recibo llamadas de método para (2) y (4). La unidad se crea en el Explorador de Windows, pero no se llama a los métodos subyacentes cuando hago clic en ella. Aunque cuando hago clic derecho me llaman para (2) y cuando selecciono " Propiedades " para un archivo o carpeta, me meto en el código para (4).

¿Hay alguna interfaz que me falta para (1) y (3) en Vista? No pude encontrar documentación completa y detallada sobre cómo escribir Extensiones de Shell para Vista en MSDN. Ya había revisado los artículos de CodeProject sobre extensiones de shell.

¿Fue útil?

Solución

El problema se debió a un uso del puntero SMART Xml. Hubo problemas cuando se llamó a Release ().

Revisa este enlace Internet Explorer se bloquea cuando MSXML2 :: IXMLDOMDocumentPtr - > Release () se llama

Otros consejos

Asegúrese de que sus extensiones estén manejando la inicialización correctamente, de lo contrario verclsid.exe no permitirá que su extensión se cargue. verclsid.exe primero carga las extensiones de shell y las revisa rápidamente antes de enviar un 'ok' al shell, lo que indica que es seguro cargar la extensión.

Consulte aquí para obtener información detallada sobre verclsid.exe.

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