Descripción de las extensiones de espacio de nombres de Shell

El Explorador de Windows proporciona una representación gráfica del espacio de nombres shell combinado con herramientas que permiten a los usuarios interactuar con objetos de Shell. Con una extensión de espacio de nombres, puedes tomar cualquier cuerpo de datos y hacer que el Explorador de Windows lo presente al usuario como una carpeta virtual. Cuando un usuario navega a esta carpeta, los datos se presentan como una jerarquía estructurada en árbol de carpetas y archivos, al igual que el resto del espacio de nombres de Shell. Los usuarios y las aplicaciones pueden interactuar con el contenido de esta carpeta virtual de la misma manera que con cualquier otro objeto de espacio de nombres. En este documento se describe cómo crear una extensión de espacio de nombres.

Funcionamiento de una extensión de espacio de nombres

En segundo plano, cada carpeta que muestra el Explorador de Windows se representa mediante un objeto Component Object Model (COM) denominado objeto folder. Cada vez que el usuario interactúa con una carpeta o su contenido, shell se comunica con el objeto de carpeta asociado a través de una de las interfaces estándar. A continuación, el objeto folder hace lo necesario para responder a la acción del usuario y el Shell actualiza la pantalla del Explorador de Windows.

La mayoría de los archivos y carpetas con los que interactúan los usuarios forman parte del sistema de archivos o de una carpeta virtual del sistema, como la Papelera de reciclaje. Otra documentación ha explicado cómo puede personalizar el comportamiento de estas carpetas estándar para satisfacer los requisitos de la aplicación mediante la modificación del registro o la implementación de controladores de extensión de Shell. Sin embargo, extender el Shell de estas maneras es más útil cuando la información se puede empaquetar fácilmente en forma de archivos o carpetas normales del sistema de archivos.

Hay varias situaciones en las que el almacenamiento de datos como una colección de carpetas y archivos del sistema de archivos podría no ser deseable o incluso imposible. Algunos ejemplos de este tipo de datos son:

  • Colección de elementos que se empaquetan de forma más eficaz en un único archivo, como una base de datos.
  • Colección de elementos almacenados en un equipo remoto que no tiene un sistema de archivos de Windows estándar. Un ejemplo de estos datos es la información almacenada en un asistente digital personal (PDA) o una cámara digital.
  • Colección de elementos que no representa datos almacenados. Un ejemplo de estos datos es los vínculos de impresora contenidos en la carpeta Impresoras estándar.

Una manera de presentar este tipo de datos a un usuario es escribir una aplicación para permitir a los usuarios ver e interactuar con los distintos elementos. Sin embargo, si los datos se pueden presentar como una jerarquía de carpetas o archivos, gran parte de la funcionalidad que tendrás que implementar podría ser servicios de interfaz de usuario que ya proporciona el Explorador de Windows. Un enfoque mucho más eficaz podría ser escribir una extensión de espacio de nombres y permitir que el Explorador de Windows se convierta en la GUI.

Para implementar una extensión de espacio de nombres, la información debe organizarse como un espacio de nombres estructurado en árbol. La raíz del espacio de nombres se presenta como una carpeta virtual en el espacio de nombres de Shell. La carpeta raíz y todos sus subcarpetas y elementos de datos se convierten en parte del espacio de nombres shell y el Explorador de Windows se convierte en la interfaz de usuario. Por lo tanto, puede presentar su información al usuario de una manera familiar y fácilmente accesible con mucho menos programación de interfaz de usuario de la que sería necesaria para una aplicación personalizada.

Una extensión de espacio de nombres consta de dos componentes básicos:

  • Un administrador de datos
  • Interfaz entre el administrador de datos y el Explorador de Windows

El primer componente de la lista depende completamente de usted. Puede almacenar y administrar los datos de la manera más eficaz. El segundo componente es el código necesario para empaquetar los datos como objetos de carpeta y controlar la interacción con el Explorador de Windows. A continuación, el Explorador de Windows puede llamar a estos objetos para permitir a los usuarios ver e interactuar con los datos como si fuera una colección de carpetas y archivos. Los objetos de carpeta de la extensión del espacio de nombres deben interactuar con el Explorador de Windows como si fueran carpetas normales. Antes de intentar implementar una extensión de espacio de nombres, primero debe comprender cómo controla el Explorador de Windows un objeto de carpeta.

Objeto Default System Folder View (DefView)

Shell proporciona una implementación predeterminada de la vista de carpetas, conocida coloquialmente como DefView, para que pueda evitar gran parte del trabajo de implementar su propia extensión de espacio de nombres. Dado que algunas características de vista no se pueden lograr a través de vistas personalizadas, a menudo se recomienda usar el objeto de vista de carpeta del sistema predeterminado en lugar de una vista personalizada. Para obtener más información, vea SHCreateShellFolderView.

Cómo interactúa el Explorador de Windows con una extensión de espacio de nombres

El Explorador de Windows proporciona a los usuarios una GUI que les permite realizar una variedad de tareas, entre las que se incluyen:

  • Navegar por la jerarquía del espacio de nombres y ver el contenido de las carpetas.
  • Para administrar el contenido del espacio de nombres, mueva, elimine y copie objetos.
  • Recuperar una variedad de información sobre objetos.
  • Iniciar aplicaciones.

La GUI del Explorador de Windows tiene cinco componentes básicos. En la ilustración siguiente se enumeran los componentes y se muestra dónde se muestran normalmente en el Explorador de Windows.

Ilustración en la que se muestran los componentes de la interfaz de usuario del Explorador de Windows

Cuando un usuario muestra una carpeta que pertenece a una extensión de espacio de nombres en el Explorador de Windows, el objeto folder tiene al menos un control parcial sobre el contenido de las cinco áreas.

Vista de árbol

La vista de árbol proporciona una vista de alto nivel del espacio de nombres. Este área hospeda un control de vista de árbol que puede mostrar cada carpeta de espacio de nombres y la posición de la carpeta en la jerarquía del espacio de nombres. Un usuario puede realizar varias operaciones con el área de vista de árbol, entre las que se incluyen:

  • Mostrar u ocultar el siguiente nivel en el espacio de nombres.
  • Copiar, mover o eliminar carpetas.
  • Haga clic con el botón derecho en una carpeta para mostrar un menú contextual.
  • Seleccionar una carpeta y ver su contenido en la vista de carpetas.

La vista de árbol se comunica con objetos de carpeta principalmente a través de su interfaz IShellFolder . Por ejemplo, cuando un usuario hace clic en el signo más (+) junto al icono de la carpeta, el Explorador de Windows expande la pantalla para mostrar las subcarpetas de la carpeta. Para obtener la información necesaria para actualizar la vista de árbol, shell realiza varias llamadas a la interfaz IShellFolder del objeto de carpeta para:

  • Solicite los atributos de la carpeta.
  • Enumerar el contenido de la carpeta.
  • Solicite nombres para mostrar para cada subcarpeta.
  • Solicite un icono para mostrar junto a cada carpeta.

A continuación, el Explorador de Windows actualiza la vista de árbol para mostrar las subcarpetas de la carpeta seleccionada. Si las subcarpetas tienen subcarpetas, se muestra un carácter "+" junto a su icono de carpeta. Hay varias tareas más sofisticadas que un usuario también puede realizar con la vista de árbol, entre las que se incluyen:

  • Con el Portapapeles para cortar o copiar una carpeta y pegarla en otra carpeta.
  • Con arrastrar y colocar para cortar o copiar una carpeta y colocarla en otra carpeta.
  • Usar un motor de búsqueda para buscar elementos en una carpeta o sus subcarpetas.
  • Modificar las propiedades de la carpeta.

Para obtener una explicación más detallada sobre cómo una extensión de espacio de nombres controla estas acciones de usuario, consulte Implementación de las interfaces de objeto de carpeta básicas.

Vista carpeta

Cuando un usuario selecciona una carpeta, el contenido de la carpeta se muestra en la vista de carpetas. En cierta medida, la funcionalidad normal de la vista de carpetas se superpone con la vista de árbol. Los usuarios pueden mover o copiar carpetas, cambiar propiedades de carpeta, ver el contenido de una subcarpeta, mostrar un menú contextual para una carpeta, etc. Sin embargo, hay algunas diferencias distintas entre la vista de árbol y la vista de carpetas:

  • La vista Carpeta muestra solo el contenido de una sola carpeta, no parte o toda la jerarquía del espacio de nombres.
  • La vista Carpeta muestra objetos de archivo, así como objetos de carpeta.
  • La vista carpeta puede mostrar mucho más información sobre los objetos que la vista de árbol.
  • La vista Carpeta permite que las extensiones de espacio de nombres tengan un control casi completo sobre qué información se muestra y cómo. Solo se pueden modificar aspectos menores de la vista de árbol, como los iconos de carpeta.

A diferencia de la vista de árbol, el Explorador de Windows no controla directamente el contenido de la vista de carpetas. La vista de carpetas es un área que el Explorador de Windows proporciona a los objetos de carpeta. Mostrar y administrar el contenido de una carpeta en la vista de carpetas es responsabilidad del objeto folder. Aunque la mayoría de las vistas de carpeta siguen un formato bastante estándar, en realidad hay pocas limitaciones sobre lo que se puede mostrar o cómo. Un caso extremo es la carpeta internet, que es un explorador completo.

Cuando un usuario selecciona una carpeta que pertenece a la extensión de espacio de nombres, crea una ventana y pasa su identificador al Explorador de Windows. Esta ventana se convierte en un elemento secundario de la ventana de vista de carpetas. El Explorador de Windows proporciona las dimensiones de la ventana de vista de carpetas, pero no aplica ninguna restricción al contenido de la ventana secundaria. A continuación, puede usar la ventana secundaria para mostrar la vista de carpetas de la carpeta.

Las extensiones de espacio de nombres usan uno de los dos enfoques para crear una vista de carpeta:

  • Use la ventana secundaria para hospedar un control de vista de lista . Este control permite mostrar el contenido de una carpeta de la misma manera que la vista clásica del Explorador de Windows.
  • Use la ventana secundaria para hospedar un control WebBrowser y usar un documento HTML dinámico (DHTML) para mostrar el contenido de la carpeta.

Ambos enfoques muestran una vista de carpeta muy similar a la que se muestra para las carpetas del sistema. Sin embargo, si desea usar un esquema de presentación diferente, puede hacerlo.

Al igual que la mayoría de las aplicaciones de Windows, el Explorador de Windows proporciona al usuario una colección de herramientas. Hay disponible una selección completa de herramientas a través de la barra de menús. Las herramientas más usadas también se representan mediante botones o cuadros de edición en una barra de herramientas. A diferencia de muchas aplicaciones de Windows, la barra de menús del Explorador de Windows es realmente un control de barra de herramientas que se ha personalizado para comportarse como un menú convencional. Tanto la barra de menús como la barra de herramientas se incorporan en un control rebar para permitir a los usuarios organizar los controles individuales para satisfacer sus necesidades.

De forma predeterminada, el Explorador de Windows admite un conjunto estándar de botones y elementos de menú, como Copiar y propiedades. La extensión de espacio de nombres puede personalizar la barra de menús y las barras de herramientas eliminando las herramientas estándar y agregando herramientas personalizadas. Cuando se inicializa el objeto de vista de carpetas, el Explorador de Windows pasa un puntero a su interfaz IShellBrowser . Esta interfaz admite varios métodos a los que se puede llamar para personalizar la barra de menús y la barra de herramientas. Cuando el usuario selecciona uno de los elementos de menú personalizados o botones de la barra de herramientas, el Explorador de Windows reenvía WM_COMMAND mensajes para elementos de barra de herramientas y menús personalizados al procedimiento de ventana de la ventana secundaria.

Barra de estado

La barra de estado del Explorador de Windows muestra información sobre el objeto seleccionado actualmente. La extensión de espacio de nombres puede usar la barra de estado para mostrar información de estado, como una cadena de texto. Puede personalizar la barra de estado llamando a IShellBrowser.