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

Windows Explorer proporciona una representación gráfica del espacio de nombres de Shell combinado con herramientas que permiten a los usuarios interactuar con objetos shell. Con una extensión de espacio de nombres, puede tomar cualquier cuerpo de datos y hacer que Windows Explorador lo presente al usuario como una carpeta virtual. Cuando un usuario examina esta carpeta, los datos se presentan como una jerarquía estructurada por árboles 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.

Cómo funciona una extensión de espacio de nombres

En segundo plano, cada carpeta que Windows Explorador muestra 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 una serie de 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 presentación 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 modificando el registro o implementando 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 una serie de situaciones en las que almacenar 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 estándar Windows. 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 representan 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 necesitará implementar podría ser servicios de interfaz de usuario que ya proporciona Windows Explorer. Un enfoque mucho más eficaz podría ser escribir una extensión de espacio de nombres y permitir que Windows Explorer 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 shell. La carpeta raíz y todas sus subcarpetas y elementos de datos se convierten en parte del espacio de nombres shell y Windows Explorer 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 mucha menos programación de la interfaz de usuario de la que se necesitaría 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 cualquier 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 Windows Explorer. Windows Explorer 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 de espacio de nombres deben interactuar con Windows Explorer como si fueran carpetas normales. Antes de intentar implementar una extensión de espacio de nombres, primero debe comprender cómo Windows Explorer controla un objeto de carpeta.

Objeto de vista de carpeta del sistema predeterminado (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 implementación de su propia extensión de espacio de nombres. Dado que algunas características de vista no se pueden lograr mediante 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 Windows Explorer con una extensión de espacio de nombres

Windows Explorer proporciona a los usuarios una GUI que les permite realizar diversas tareas, entre las que se incluyen:

  • Navegar por la jerarquía de espacios 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.
  • Inicio de aplicaciones.

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

illustration showing components of the windows explorer user interface

Cuando un usuario muestra una carpeta que pertenece a una extensión de espacio de nombres en Windows Explorer, el objeto de carpeta 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, Windows Explorador expande la pantalla para mostrar las subcarpetas de la carpeta. Para obtener la información necesaria para actualizar la vista de árbol, el Shell realiza varias llamadas a la interfaz IShellFolder del objeto de carpeta a:

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

Windows Explorador 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 una serie de tareas más sofisticadas que un usuario también puede realizar con la vista de árbol, entre las que se incluyen:

  • Use 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 de 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 las propiedades de la 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 ni 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 mucha 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, Windows Explorer no controla directamente el contenido de la vista de carpeta. La vista de carpetas es un área que Windows Explorer 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 algunas limitaciones en lo que se puede mostrar o cómo. Un caso extremo es la carpeta de Internet, que es un explorador completo.

Cuando un usuario selecciona una carpeta que pertenece a la extensión de espacio de nombres, se crea una ventana y se pasa su identificador a Windows Explorer. Esta ventana se convierte en un elemento secundario de la ventana de vista de carpetas. Windows Explorer proporciona las dimensiones de la ventana de vista de carpetas, pero no aplica restricciones 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 Windows, Windows Explorer 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 Windows, la barra de menús Windows Explorer 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, Windows Explorer 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, Windows Explorer 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, Windows Explorador reenvía WM_COMMAND mensajes para los elementos de menú y barra de herramientas personalizados al procedimiento de ventana de la ventana secundaria.

Barra de estado

La barra de estado Windows Explorer 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.