Controladores de hoja de propiedades

Cuando un usuario hace clic con el botón derecho en un objeto Shell, el menú contextual que se muestra normalmente incluye un elemento Propiedades . Al seleccionar ese elemento se inicia una hoja de propiedades que permite al usuario ver y, en algunos casos, modificar las propiedades del objeto. Puede personalizar esta hoja de propiedades implementando y registrando un controlador de hoja de propiedades.

Los procedimientos generales para implementar y registrar un controlador de extensión de Shell se describen en Creación de controladores de extensión de Shell. Este documento se centra en los aspectos de la implementación que son específicos de los controladores de hoja de propiedades.

Funcionamiento de los controladores de hoja de propiedades

En la ilustración siguiente se muestra la hoja de propiedades Propiedades de un archivo de texto de Windows XP.

hoja de propiedades

En esta ilustración se muestra la hoja de propiedades Propiedades predeterminada que se muestra para cualquier archivo. Para muchas de estas hojas de propiedades, puede agregar una o varias páginas a la hoja de propiedades implementando y registrando un controlador de hoja de propiedades.

Los controladores de hojas de propiedades se registran normalmente para un tipo de archivo. Cada controlador puede agregar una página personalizada a la hoja de propiedades Propiedades de la clase . Normalmente, estas páginas proporcionan a los usuarios acceso a las propiedades específicas del tipo de archivo determinado. Un tipo de archivo formado por documentos de texto podría, por ejemplo, mostrar una página que enumera el título y el autor, y un resumen del documento. Se usa un caso especial de este tipo de controlador de hoja de propiedades para agregar una página a la hoja de propiedades Propiedades de una unidad montada.

El otro uso para los controladores de hoja de propiedades es reemplazar las páginas de las hojas de propiedades mostradas por Panel de control aplicaciones. Un fabricante del mouse, por ejemplo, puede usar un controlador de hoja de propiedades para reemplazar la página Botones de la hoja de propiedades Propiedades del mouse de Panel de control por una página personalizada para las características de su mouse.

Al igual que todos los controladores de extensiones de Shell, los controladores de hoja de propiedades son objetos del Modelo de objetos componentes (COM) en proceso implementados como ARCHIVOS DLL. Deben exportar dos interfaces además de IUnknown: IShellExtInit e IShellPropSheetExt.

El shell usa la interfaz IShellExtInit para inicializar el controlador. Cuando el Shell llama a IShellExtInit::Initialize, pasa un objeto de datos con el nombre del objeto y el puntero a una lista de identificadores de elemento (PIDL) de la carpeta que contiene el archivo. El parámetro hRegKey no se usa con controladores de hoja de propiedades. El método IShellExtInit::Initialize debe extraer el nombre de archivo del objeto de datos y almacenar el nombre y el PIDL de la carpeta para su uso posterior. Para obtener más información, consulte la sección Implementación de IShellExtInit de Creación de controladores de extensión de Shell.

El resto de la operación tiene lugar a través de la interfaz IShellPropSheetExt del controlador. Si la hoja de propiedades está asociada a un tipo de archivo, el Shell llama a IShellPropSheetExt::AddPages para permitir que el controlador agregue una página a la hoja de propiedades. Si la hoja de propiedades está asociada a una aplicación de Panel de control, el shell llama a IShellPropSheetExt::ReplacePage para permitir que el controlador reemplace una página.

Registrar e implementar un controlador de hoja de propiedades para una unidad montada

Cada unidad montada tiene una hoja de propiedades que el usuario puede mostrar. En la ilustración siguiente se muestra una hoja de propiedades de una unidad de CD-ROM.

hoja de propiedades de propiedades de cd-rom

Hay una amplia variedad de dispositivos que se pueden montar como unidades. Dado que la hoja de propiedades predeterminada, diseñada para unidades de disco, podría no ser suficiente para algunos dispositivos, se puede implementar un controlador de hoja de propiedades para agregar una página específica del dispositivo montado. La implementación básica de este tipo de controlador de hoja de propiedades es idéntica a la que se describe en Cómo registrar e implementar un controlador de hoja de propiedades para un tipo de archivo, con dos excepciones.

  • El objeto de datos pasado al método IShellExtInit::Initialize del controlador puede contener la ruta de acceso de la unidad en el formato CFSTR_MOUNTEDVOLUME en lugar del formato CF_HDROP . El formato CF_HDROP se usa cuando el dispositivo se monta en una letra de unidad. El formato CFSTR_MOUNTEDVOLUME se usa con sistemas de archivos NTFS cuando el dispositivo remoto se monta en una carpeta en lugar de en una letra de unidad.
  • El GUID del controlador se registra en la clave HKEY_CLASSES_ROOT\Drive\shellex\PropertySheetHandlers .

Cómo registrar e implementar un controlador de hoja de propiedades para un tipo de archivo

Cómo registrar e implementar un controlador de hoja de propiedades para una aplicación de Panel de control