Este artículo proviene de un motor de traducción automática.

Dentro de Windows 7

Introducción a las bibliotecas

Yochay Kiriaty

En este artículo se describen:

  • Windows 7
  • Las bibliotecas
  • Cuadro de diálogo común de archivos
  • Modelo de programación de shell
En este artículo se utilizan las siguientes tecnologías:
Windows 7

Este artículo se basa en una versión preliminar de Windows 7. Detalles están sujetos a cambios.

Contenido

Lo que las bibliotecas de media para los usuarios de Windows 7
Aplicaciones de biblioteca compatibles con
Mediante el cuadro de diálogo de archivo común
Seleccionar y utilizar las bibliotecas de como las carpetas
Modelo de programación de shell
Utilizando el modelo de programación de shell
Con el nuevo IShellLibrary API
Las bibliotecas en la ocultas
Compatibilidad con el modelo de biblioteca completa
Resumen

Éste es el primero de artículos de una serie de artículos sobre Windows 7. La serie se centra en nueva experiencias de usuario que los desarrolladores pueden puntear en que su aplicación solar en Windows 7. Este artículo, en parte, se centra en un concepto de almacenamiento de perfil de usuario nuevo en Windows 7, denominado bibliotecas. DescargarWindows 7 Release Candidateahora para ayudarle a sacar el máximo partido de este artículo.

Lo que las bibliotecas de media para los usuarios de Windows 7

Antes de empezar comenzar con la API de las bibliotecas de 7 de Windows, se necesita mejor comprender por qué las bibliotecas se introdujeron en Windows 7 y cómo mejoran la experiencia de usuarios para administrar su contenido. Para comprender mejor el concepto de bibliotecas de Windows 7, debemos buscar nuevo en tiempo. Las versiones anteriores de Windows, como Windows Vista y Windows XP, incluyen conjuntos de carpetas especiales para almacenar el contenido de los usuarios, como Mis documentos. Windows XP utiliza la constante especial Item ID lista (CSIDL), que es una lista de valores que proporcionan una forma independiente de sistema única identificar carpetas especiales utilizadas con frecuencia por aplicaciones, pero que no puede tener el mismo nombre o ubicación de cualquier sistema determinado.

En el marco de Windows Vista, CSIDL evolucionado en un nuevo sistema de almacenamiento denominado conocidos identificadores de carpeta. Como de Windows Vista, se hace referencia CSIDL carpetas especiales a un conjunto de valores de GUID. Es importante que observe que el sistema CSIDL está aún admite tanto en Windows Vista y Windows 7 para versiones anteriores compatibilidad. En la lista conocidos ID carpeta puede buscar la carpeta FOLDERID_Documents. Esta carpeta representa tanto la carpeta Mis documentos como parte del perfil de almacenamiento de los usuarios y la FOLDERID_Fonts como parte de las carpetas especiales del sistema. En Windows 7, expande la lista de identificadores conocidos de carpeta para admitir Windows 7 bibliotecas. Puede encontrar allí, entre otras cosas, los GUID como el FOLDERID_DocumentsLibrary que representa la biblioteca de documentos. En Windows Vista, estas carpetas especiales se indizan automáticamente para que los usuarios puedan realizar operaciones de búsqueda más rápidas y más eficientes en su contenido. Sin embargo, encontramos que muchos archivos de almacén de los usuarios en una variedad de coloca en su PC, no sólo en las carpetas de perfil de usuario "especial", sino también en varias carpetas como c:\My carpeta temporal, d:\Birthday2008\pictures, o incluso en almacenamiento remoto. Afecta almacenar archivos fuera el espacio de almacenamiento de perfil a los usuarios a la indización, que reduce la experiencia de búsqueda de los usuarios. Nos a menudo busque nosotros buscando un archivo concreto que hemos trabajadas en unos pocos días hace, olvidarse de donde se guardó, y, a continuación, descubrir que la búsqueda no está realizando buscarlo porque nunca se ha indizado el archivo.

Con Windows 7, el concepto de bibliotecas intenta solucionar el problema de los usuarios almacenar contenido todo a través de su equipo, al permitirles tener control total sobre su estructura de carpeta de la biblioteca de documentos. En otras palabras, en Windows 7 a los usuarios pueden definir qué carpetas desea incluir en la biblioteca de documentos. De hecho, esto es true para que cualquier biblioteca de Windows 7. Puede decimos que las bibliotecas son colecciones de definido por el usuario de las carpetas que son representaciones lógicas de contenido de usuario. Al incluir las carpetas en las bibliotecas, el usuario está indicando Windows donde se encuentran datos importantes de su. El sistema indizar estas carpetas, habilitar la búsqueda más rápida y mucho más rico disposición de ver las capacidades de explorador de Windows basándose en los propiedades de archivo y los metadatos. la figura 1 muestra la integración de varias carpetas en una vista de biblioteca único y se muestra la búsqueda completo y pivots del explorador de Windows en Windows 7.

fig01.gif

Figura 1 ver de integración de varias carpetas en una biblioteca única

Las bibliotecas son una parte integral de la shell de Windows. Esta integración es muy importante porque permite a los usuarios examinar los archivos de la misma manera que lo harían en una carpeta, lo que significa hay ningún comportamiento nuevo que necesitan para obtener información sobre los usuarios. Simplemente haciendo clic en la biblioteca de documentos muestra todos los documentos en una organización particular. Además, debido al hecho de que las bibliotecas están integradas en el shell de Windows, los usuarios pueden realizar operaciones de búsqueda y filtrar los resultados mediante las propiedades y los metadatos, como la fecha se tomar la imagen, el género de la canción y la popularidad del artículo. En otras palabras, usando bibliotecas de los usuarios disfrutar disfrutar de almacenamiento de archivos que es flexible y indizado.

Aplicaciones de biblioteca compatibles con

Deseamos que tenga en cuenta que aunque la mayoría de las aplicaciones debe funcionan bien con bibliotecas de 7 de Windows, hay una oportunidad para puntear en el entorno Windows 7 bibliotecas para proporcionar más variadas experiencias de usuario. Uno es posible que pregunte ¿qué ocurriría si una aplicación no admite las bibliotecas. Vamos a imagine una aplicación que, como parte de su funcionalidad, necesita para guardar un archivo en el disco. La aplicación pide al usuario con la opción para seleccionar una ubicación para el archivo que se va a guardar. El usuario puede seleccionar la biblioteca de documentos con su Guardar ubicación, ya que es donde en que el usuario pasa normalmente cuando necesita trabajar en un documento.

Sin embargo, si la aplicación no reconoce que la biblioteca de documentos no es una carpeta normal, la aplicación intenta guardar el archivo directamente en la biblioteca de documentos como si lo es sólo otra carpeta en el disco. Esto representa un problema, ya que por ahora, como ya sabemos, las bibliotecas de son una ubicación de non–file del sistema y, por tanto, no puede tratarse como carpetas normales. La aplicación debe ser consciente de que el hecho de que está trabajando con las bibliotecas. Afortunadamente, Windows 7 incluye un actualizada API de shell, el bibliotecas de API y la actualizada cuadro de diálogo común de archivos que permiten a los desarrolladores controlar correctamente las bibliotecas.

Una aplicación de biblioteca, tenga en cuenta debe incluir mecanismos para controlar situaciones donde los usuarios sin darse cuenta intentan seleccionar bibliotecas como si son carpetas para guardar archivos en una biblioteca de ni carga el contenido de una biblioteca. Además, la mayoría de las aplicaciones permite a los usuarios interactuar con el sistema de archivos como parte de la experiencia de aplicaciones. Una aplicación debe proporcionar a los usuarios con el mismo puntos de entrada familiar y INTERFAZ ofrecida por las bibliotecas de 7 de Windows. Mediante la inclusión de carpetas en una biblioteca, los usuarios designados donde se almacenan sus datos importantes, que nos indica que este es el contenido interesa. Las aplicaciones deben promocionar estas ubicaciones por compatibilidad con las bibliotecas en su aplicación.

Para los desarrolladores, hay varios puntos de integración con Windows 7 que pueden ayudar a las aplicaciones se convierten en library, tenga en cuenta. Los desarrolladores deben revisar los siguientes tres puntos de integración y seleccionar conforme a sus necesidades.

  1. El punto de integración más básico es simplemente utilizar el cuadro de diálogo de archivo común (CFD) para archivos y carpetas de expediciones y guardar directamente en una biblioteca.
  2. El segundo punto de integración ofrece las aplicaciones de la opción solar en Windows 7 habilitando las aplicaciones seleccione y consumir el contenido de las bibliotecas.
  3. El último punto de integración ofrece la opción más avanzada de integración de admitir el modelo de programación biblioteca completa.

Mediante el cuadro de diálogo de archivo común

La buena noticia es que Windows 7 bibliotecas son una primera clase principal de la CFD, permitir que los usuarios examinar y buscar en bibliotecas. Incluso pueden elegir una biblioteca específica como Guardar ubicación que no sea sólo una de las carpetas desde dentro de la biblioteca, pero en su lugar la biblioteca. Como bibliotecas de 7 de Windows son de seguridad de almacenamiento, los usuarios pueden guardar y copiar archivos en cualquier carpeta que tienen permisos para que se incluyen en una biblioteca. Cada biblioteca tiene un valor predeterminado guardar la ubicación donde los archivos quedan cuando los usuarios copiar y guardar archivos directamente a la biblioteca. De forma predeterminada, esta ubicación será la carpeta conocida que se incluye en una biblioteca predeterminada, o la primera carpeta agregado a una biblioteca personalizada.

Pero (siempre hay esta limitación!), se recomienda utilizar la nueva interfaz CFD que se introdujo con Windows Vista y no la versión heredada de la CFD. Es muy importante tener en cuenta que las API para utilizar el CFD heredado no han cambiado desde Windows Vista y Windows XP, por motivos de compatibilidad de aplicaciones. Sin embargo, la versión heredada de la CFD directamente no admite bibliotecas o la nueva completa experiencia del usuario que ofrece Windows 7. la figura 2 muestra los antiguos y el nuevo CFD en paralelo.

fig02a.gif

fig02b.gif

La Figura 2 vista anterior y nuevo del cuadro de diálogo de archivo común de nuevo

En el CFD heredado, aunque las bibliotecas se presentan en el panel de exploración derecha, requieren un clic adicional para guardar en una de las carpetas incluye en vez de sólo la biblioteca. Los usuarios pueden no buscar directamente desde dentro del CFD o experiencia de los controladores de vista previa enriquecido, ni seleccionar varios archivos en las carpetas, porque el CFD heredado no admite la devolución varios archivos de ubicaciones de carpeta diferente. Por el contrario, éste es un escenario que admita una biblioteca de 7 de Windows.

Es importante usar las API adecuadas para mostrar la versión correcta de la CFD. En cuanto al mostrar un CFD mediante .NET, los desarrolladores pueden utilizar el System.Windows.Forms.FileDialog o el espacio de nombres Microsoft.Win32.FileDialog. Desde el último utiliza la versión heredada de la CFD, los desarrolladores de .NET a deben utilizar siempre el espacio de nombres de WinForms para mostrar el nuevo CFD. la figura 3 muestra un fragmento de código que se pide al usuario para elegir guardar ubicación mostrando el común guardar cuadro de diálogo de archivo, permite al usuario seleccionar las carpetas o bibliotecas.

Archivo de la figura 3 SaveFileDialog

System.Windows.Forms.SaveFileDialog _fd = new System.Windows.Forms.  SaveFileDialog();
_fd.Title = "Please choose a location to save your file";
_fd.FileName = "[Get Folder…]";
_fd.Filter = "Library|no.files";
if (_fd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    string dir_path = System.IO.Path.GetDirectoryName(_fd.FileName);
    if (dir_path != null && dir_path.Length > 0)
    { 
        lblResult.Content = dir_path; 
    }
}

Los desarrolladores de código nativo deben utilizan la familia nueva de API nativas de IFileDialog: IFileDialog, IFileOpenDialog, IFileSaveDialog, IFileDialogCustomize, IFileDialogEvents, IFileDialogControlEvents. Estos reemplazar las API heredadas de las versiones anteriores de Windows: GetOpenFileName, GetSaveFileName.

La figura 4 muestra cómo utilizar la nueva familia de API nativas de IFileDialog para preguntar al usuario con un almacenamiento cuadro de diálogo para guardar en una carpeta o biblioteca.

La figura 4 IFileDialog nativo API

*ppsi = NULL;
IFileSaveDialog *pfod;
hr = CoCreateInstance(
CLSID_FileSaveDialog, 
NULL, 
CLSCTX_INPROC, 
IID_PPV_ARGS(&pfod));
if (SUCCEEDED(hr))
{
  hr = pfod->SetOptions(FOS_PICKFOLDERS);
  if (SUCCEEDED(hr))
  {
  hr = pfod->Show(hWndParent);
           if (SUCCEEDED(hr))
           {
           hr = pfod->GetResult(ppsi);
           }
    }
    pfod->Release();
}

Las API nativas de shell son basadas en COM. Antes de utilizar cualquier objeto COM tenemos que inicializar el objeto COM mediante una llamada a CoCreateInstance. Después de inicializar el * pfod IFileSaveDialog variable, se establecer las opciones de diálogo para seleccionar las carpetas, pasando el indicador FOS_PICKFOLDERS a la IFileOpenDialog.SetOptions(). Este código indica el diálogo abrir para permitir que el usuario seleccione carpetas mejor que archivos y permite el usuario elija una biblioteca como Guardar ubicación. En el caso de seleccionar una biblioteca, el CFD, a continuación, devolver la predeterminada para guardar carpeta de ubicación que está asociado con el elegido biblioteca.

La figura 3 y la figura 4 son muy sencillos y no introducen cualquier código nuevo. Sin embargo, es importante potenciar la coherencia entre aplicaciones que se ejecutan en Windows 7 y en apoyo de bibliotecas de 7 de Windows. El CFD está diseñado para proporcionar una experiencia coherente con el nuevo explorador de Windows, incluidas bibliotecas. Todas las mejoras en Windows Explorer de 7 han se transfieren al CFD. En la mayoría de los casos, es la forma ideal para los usuarios buscar e interactúen con las bibliotecas de dentro de la aplicación.

Seleccionar y utilizar las bibliotecas de como las carpetas

Vamos a imagine un caso de una aplicación de presentación que contenga las imágenes para el usuario. Mediante el uso de las bibliotecas, el usuario es esencialmente indicando el sistema que se almacenan sus imágenes importantes en la biblioteca de imágenes. La aplicación simplemente puede señalar directamente a la biblioteca de imágenes y mostrar toda la colección de imágenes para el usuario. Además, desde el punto de vista del desarrollador, con el sistema de biblioteca puede elimina la necesidad para mantener un archivo de configuración independientes o base de datos de imágenes, por ejemplo, dado que los desarrolladores pueden confiar en el sistema de biblioteca. Antes de profundizar en las bibliotecas de shell de las API de programación, debemos comprender unos cuantos conceptos sobre el modelo de programación de shell.

Modelo de programación de shell

Un elemento de shell (IShellItem), que comúnmente se conoce como un elemento, es la moneda de la interfaz de usuario del shell y su modelo de programación. Los elementos son orígenes de contenido individuales y independientes. Por ejemplo, bastante algunos de los métodos de interfaz que se utiliza para controlar CFDs utilizar elementos de shell para hacer referencia a las carpetas en lugar de rutas de acceso de sistema de archivos. Esto es importante porque la CFD puede comunicar información acerca de carpetas de sistema de archivos y otras carpetas virtuales que encuentre en el shell, como el panel de control o la carpeta del equipo.

Otras interfaces de shell COM importantes son:

  • Interfaz de API representa un vínculo, normalmente a un archivo, carpeta o un archivo ejecutable
  • Interfaz de IShellFolder representa objetos de carpetas shell desde el espacio de nombres de shell. Utilizar IShellFolder puede atravesar por el contenido de una carpeta, recuperar el nombre de presentación de un elemento en una carpeta, analizar un nombre para mostrar relativa a la carpeta y obtener una lista de ID. de artículo

Windows 7 presenta una nueva API de shell, denominada IShellLibrary, que puede consultar IShellItem para trabajar y admite las bibliotecas de Windows 7.

Ahora que hemos definido los distintos componentes del modelo de programación de shell, podemos ver cómo se ajustan las bibliotecas en este modelo. Puesto que las bibliotecas no son ubicaciones de archivo del sistema, puede utilizar el archivo system–specific API como FindFirstFile. En su lugar, tiene dos opciones principales para consumir el contenido de una biblioteca.

Utilizando el modelo de programación de shell

Puede utilizar las interfaces IShellItem y IShellFolder y un número de funciones auxiliares para enumerar el contenido de bibliotecas, como si fueran carpetas normales. Esto significa que las aplicaciones pueden consumir el contenido de una biblioteca sin utilizar la nueva API de las bibliotecas y con muy pocos cambios en su código base existente.

Figura 5 muestra cómo utilizar la interfaz IShellFolder para enumerar todo el contenido de la biblioteca de imágenes.

La figura 5 IShellFolder interfaz

IShellItem *psi;
HRESULT hr =  SHGetKnownFolderItem(FOLDERID_PicturesLibrary, KF_FLAG_CREATE, NULL, IID_PPV_ARGS(&psi));
if(SUCCEEDED(hr))
{
    IShellFolder *psf;
    hr = psi->BindToHandler(NULL, BHID_SFObject | , IID_PPV_ARGS(&psf));
    if(SUCCEEDED(hr))
         {
               IEnumIDList *penumIDList;
               psf->EnumObjects(NULL, SHCONTF_FOLDERS | SHCONTF_NONFOLDERS , IID_PPV_ARGS(&penumIDList));
               //use penumIDList to enumerate the content of the folder
          }
}

Aquí puede ver mediante la función auxiliar SHGetKnownFolderItem se puede recuperar la ubicación correcta de la biblioteca, pasando el FOLDERID_PicturesLibrary. Esto es un GUID que representa la carpeta conocida, que en nuestro caso, es la biblioteca de imágenes. Una llamada correcta rellenará el IShellItem * interfaz psi con la información correcta acerca de la biblioteca, representado como un elemento de shell. El resto del código es shell estándar de programación, donde se utilice el BindToHandler para enlazar el elemento de shell obtenido previamente a una carpeta de shell (conversión). A continuación, nos enumerar por los distintos elementos de la carpeta de shell, que en el caso de una biblioteca, pueden ser archivos o carpetas. El SHGetKnownFolderItem es una función auxiliar de shell y forma parte de un grupo mayor de funciones auxiliares que puede encontrarse en el archivo de encabezado shlobj.h en el SDK de RC de 7 de Windows. Tenga en cuenta la SHCONTF_FOLDERS | SHCONTF_NONFOLDERS indicadores que se están pasando. Esto es indicar la carpeta de shell que se desea devolver todos los archivos y carpetas en una biblioteca. Se podría pasar SHCONTF_NAVIGATION_ENUM para obtener las ubicaciones de biblioteca, en lugar de la biblioteca de contenido.

Con el nuevo IShellLibrary API

Puede conseguir la misma funcionalidad que se muestra en La figura 5 mediante la nueva API de IShellLibrary de 7 Windows, como se muestra en Figura 6 .

Figura 6 IShellLibrary API

IShellLibrary *pslLibrary;
HRESULT hr = SHLoadLibraryFromKnownFolder(FOLDERID_PicturesLibrary, STGM_READ, IID_PPV_ARGS(&pslLibrary));
if(SUCCEEDED(hr))
{
       IShellItemArray *psiaFolders;
       hr = pslLibrary->GetFolders(LFF_STORAGEITEMS, IID_PPV_ARGS(&psiaFolders)); 
       IEnumShellItems *penumShellItems;
       psiaFolders->EnumItems(&penumShellItems);
       //work with penumShellItem to enumerate the items in the library
}

Aquí puede ver que se utilice otra función auxiliar, SHLoadLibraryFromKnownFolder, para crear el objeto IShellLibrary. De este objeto se puede llamar al método GetFolders para devolver un IShellitemArray. Esta devolución se utiliza posteriormente para obtener un enumerador para recorrer a través de todo el contenido de la biblioteca.

En el ejemplo último, se utiliza la función auxiliar, SHLoadLibraryFromKnowFolder. Como se mencionó anteriormente, esta función auxiliar y otros relacionados con bibliotecas de 7 de Windows, pueden encontrar en el archivo de encabezado shlobj.h Windows 7 RC SDK de. Aquí es una lista de las funciones auxiliares de biblioteca importantes:

  • SHAddFolderPathToLibrary agrega una carpeta a una biblioteca
  • SHCreateLibrary (crea un objeto IShellLibrary)
  • SHLoadLibraryFromItem (crea y carga un objeto IShellLibrary desde un archivo de definición biblioteca especificada)
  • SHLoadLibraryFromKnownFolder (crea y se carga un objeto IShellLibrary para un KNOWNFOLDERID especificado)
  • SHLoadLibraryFromParsingName (crea y carga un objeto IShellLibrary para una ruta de acceso especificada)
  • SHRemoveFolderPathFromLibrary (quita una carpeta de una biblioteca)
  • SHResolveFolderPathInLibrary (intenta resolver la ubicación de destino de una carpeta de biblioteca que se ha movido o cambiado de nombre)
  • SHSaveLibraryInFolderPath guarda un objeto IShellLibrary en el disco

Vamos a revisar la siguiente (de código La figura 7 ) que utiliza algunas de estas funciones auxiliares para crear una nueva biblioteca, asocia una carpeta con esa biblioteca y "guarda" la biblioteca en la carpeta de bibliotecas.

La figura 7 IShellLibrary mediante la función auxiliar de SHCreateLibrary

IShellLibrary *pIShelLibrary;
HRESULT hr = SHCreateLibrary(IID_PPV_ARGS(&pIShelLibrary));
if (SUCCEEDED(hr))
{
      IShellItem *pIShellItem;
      SHAddFolderPathToLibrary(pIShelLibrary, L"C:\\Users\\Public\\Documents");
      hr = pIShelLibrary->SaveInKnownFolder(FOLDERID_Libraries, L"My New Library", LSF_MAKEUNIQUENAME, 
            &pIShellItem);
      pIShellItem->Release();
      pIShelLibrary->Release();
}

Aquí puede ver que se está creando un nuevo objeto de IShellLibrary mediante la función auxiliar de SHCreateLibrary. A continuación se agregar la carpeta pública de documentos al objeto de biblioteca. A continuación, se guarde la nueva biblioteca en la carpeta bibliotecas, con el resto de las bibliotecas y asígnele el nombre de mi biblioteca nueva.

En la figura 7 , utilizamos el método SaveInKnownFolder de la interfaz IShellLibrary para guardar la nueva biblioteca que acabamos de crear. La mayoría de los métodos de la interfaz IShellLibrary están no necesita explicación. Sin embargo, vamos a revisar algunas que requieren nuestra atención:

  • El método Commit confirma los cambios de la biblioteca en un archivo de biblioteca existente. Esto quiere decir que siempre que cambie mediante programación una biblioteca, debe llamar al método commit para guardar los cambios.
  • El método SetIcon toma un nombre DLL de recursos y el índice de icono para establecer el icono de la biblioteca.
  • El SetFolderType recibe un GUID de plantillas de carpeta-tipo conocido como un parámetro de entrada. Este GUID define el tipo de la biblioteca, que puede ser una de las siguientes: genérico, imágenes, música, vídeo y documentos. Configuración de la plantilla folder-type modifica Explorador de Windows de la biblioteca pero permite la búsqueda y las opciones de vista esencial específicas en el tipo de biblioteca.

Las bibliotecas en la ocultas

Tal como se muestra en la figura 7 , el código crea un nuevo archivo de biblioteca en la carpeta de bibliotecas. Una biblioteca de Windows 7 se almacena como archivos de definición XML que tiene una extensión de archivo de ms-.Library. El nombre de archivo es el nombre real de la biblioteca. Por ejemplo, la biblioteca de documentos está representada por un archivo XML, llamado ms-Documents.library. Las descripciones de biblioteca se guardan en el disco en la carpeta %appdata%\Microsoft\Windows\Libraries (también conocido como FOLDERID_Libraries).

Vamos a cavar en el esquema del archivo de definición de la biblioteca de documentos. La estructura XML es bastante no necesitan explicación, pero vamos a explicar algunos de sus elementos. Tal como se muestra en la figura 8 , en la parte superior del archivo se puede encontrar la biblioteca de "encabezado" información:

Figura 8 documentos biblioteca de definición de esquema de archivo

<libraryDescription xmlns="https://schemas.microsoft.com/windows/2009/  library">
  <name>@shell32.dll,-34575</name>
  <ownerSID>S-1-5-21-2127521184-1604012920-1887927527-4897363</ownerSID>
  <version>4</version>
  <isLibraryPinned>true</isLibraryPinned>
  <iconReference>imageres.dll,-1002</iconReference>
  <templateInfo>
    <folderType>{7D49D726-3C21-4F05-99AA-FDC2C9474656}</folderType>
  </templateInfo>

El elemento XML raíz es libraryDescription, que contiene elementos secundarios que definen la biblioteca, de manera:

  • <ownersid> define el IDENTIFICADOR de seguridad del usuario que creó esta biblioteca para aislar las bibliotecas y proteger datos de usuario de otros usuarios.
  • <islibrarypinned> es un elemento de valor de tipo Boolean que define si la biblioteca está anclado al panel de exploración izquierdo en el Explorador de Windows y no a la barra de tareas.
  • <version><versión> define la versión de contenido de esta biblioteca, que refleja el número de veces que se cambió el archivo de definición de la biblioteca.
  • <templateinfo> es un elemento contenedor opcional que permite al autor especificar el tipo de carpeta (documentos, imágenes, vídeo) para controlar las disposiciones de vistas en el Explorador de Windows.
  • <iconreference> define un recurso de icono utilizando el estilo de recursos shell de Windows estándar. Por ejemplo:

<iconreference> C:\Windows\system32\imageres.dll,-65 </iconreference>.

Este icono presenta la biblioteca de Windows Explorer.

Los usuarios no pueden cambiar el icono de bibliotecas de predeterminado a través del explorador de Windows, ni pueden asignar el icono a una nueva biblioteca user-defined personalizada. Sin embargo, esto puede realizarse mediante programación mediante la API, que se explicará en futuras partes de esta serie.

Una parte fundamental del código XML es la lista de ubicaciones que representa la biblioteca, tal como se muestra en el siguiente código:

<searchConnectorDescriptionList>
    <searchConnectorDescription publisher="Microsoft" product="Windows">
      <description>@shell32.dll,-34577</description>
      <isDefaultSaveLocation>true</isDefaultSaveLocation>
      <isSupported>true</isSupported>
      <simpleLocation>
        <url>knownfolder:{FDD39AD0-238F-46AF-ADB4-6C85480369C7}</url>
      <serialized>MBAAAE…. </serialized>
      </simpleLocation>
    </searchConnectorDescription>
  • <searchconnectordescriptionlist> contiene uno o más conectores de búsqueda que se asignan a las ubicaciones físicas incluidas en la biblioteca.
  • <searchconnectordescription> contiene un elemento simpleLocation que describe una ubicación incluida en la biblioteca.
  • <url> define una dirección URL para esta ubicación.Humanos de legibilidad sólo, esto no se puede se usar por los desarrolladores ya que es probable que esté actualizada.
  • <serialized> es la representación real de una ubicación en una biblioteca que es un objeto ShellLink serializado.

Una nota final: aplicaciones no deben nunca intentar tener acceso a o editar archivos de descripción de la biblioteca.En su lugar, las aplicaciones siempre deben utilizar el shell de programación modelo o la API IShellLibrary para consumir y manipular el contenido de biblioteca.

Compatibilidad con el modelo de biblioteca completa

Un usuario puede agregar, quitar y reordenar las ubicaciones, así como cambiar la configuración predeterminada Guardar ubicación a través de la UI de administración de biblioteca.Esto se muestra en la figura 9 , que está disponible directamente desde el Explorador de Windows.

fig09.gif

Figura 9 interfaz de usuario de administración de biblioteca

Además, se pueden modificar las ubicaciones de la biblioteca a través de la interfaz IShellLibrary.Cualquier cambio en una estructura de biblioteca se reflejarán en el archivo de definición de biblioteca y continúa directamente al archivo ms-.library subyacente.Se puede informará de estos cambios mediante la supervisión de los cambios en el archivo .library-ms.Asumir el contenido de una biblioteca depende de la aplicación, o la aplicación actualmente es mostrar el contenido de una biblioteca determinada.Desea recibir una notificación cuando el contenido de la biblioteca cambia.Las aplicaciones que desean se le notifiquen los cambios en el archivo de definición de la biblioteca pueden hacerlo mediante la función auxiliar de shell SHChangeNotifyRegister nativa o usando el FileSystemWatcher administrado que se encuentra en el espacio de nombres de System.IO.Uso de estas interfaces está fuera del ámbito de este artículo ya que estos no son nuevas API y están bien documentados.

Otra opción que tener en cuenta es el caso en que la aplicación necesita para administrar carpetas para los usuarios, como agregar una nueva carpeta de imágenes en el repositorio de imagen.Si estás utilizando la biblioteca de imágenes, puede utilizar el diálogo de administración de la biblioteca en su aplicación para mostrar el mismo cuadro de diálogo que Windows 7 ofrece a los usuarios administrar sus bibliotecas.Al hacerlo, es mantener una apariencia coherente y el comportamiento que el usuario aumenta a apreciar.Si decide utilizar la interfaz de diálogo biblioteca de administración, los cambios en la biblioteca se realizarán como si se modifica el contenido de biblioteca directamente en el Explorador de Windows.Este cuadro de diálogo no devuelve ninguna información a la aplicación.En caso de que se muestran el contenido de una biblioteca determinada, tendrá que registrar la notificación recibir actualizaciones, como se explicó anteriormente.

Resumen

En este artículo, se introdujeron el concepto y modelo de programación de bibliotecas de Windows 7.Revisar la función importante que las bibliotecas reproducirlo como parte de la experiencia de usuario de Windows 7.A continuación, que tomó una profundidad de profundice en bibliotecas, comprender cuáles son las bibliotecas y explorar su arquitectura subyacente auxiliar.A continuación, se vio las oportunidades diferentes que los programadores tienen, que hacer que sus aplicaciones tenga en cuenta para la biblioteca.Por último, pasó un breve paseo por los diferentes modelos de programación disponibles y las API.

Yochay Kiriaty es un Evangelista técnico de Microsoft, centrándose en Windows 7.Tiene más de una década de experiencia en desarrollo de software.Ha escrito y taught informática académicas courses y es un colaborador de activoEl blog de Windows .

Alon Fliess es el director del grupo de Sela.Sela tiene un registro de seguimiento de 18 años de éxito de TI formación y se reconoce como líder ’s Israel en la formación de alta calidad que el personal de tecnología de la información.Alon tiene un conocimiento profundo de la tecnología informática y contiene un grado BSc de electricidad y ingeniería de equipo de Technion, el Israel Institute of Technology.Se ha de programación y enseñanza durante los últimos Alon 22 años y es un experto en muchas tecnologías de Microsoft, especialmente sobre elementos internos de Windows, programación de C++ Win32 y .NET con C# o C++ / CLI.