Compartilhar via


Este artigo foi traduzido por máquina.

Windows interna 7

Apresentando as bibliotecas

Yochay Kiriaty

Este artigo discute:

  • Windows 7
  • Bibliotecas
  • Caixa de diálogo de arquivo comuns
  • Modelo de programação do shell
Este artigo usa as seguintes tecnologias:
Windows 7

Este artigo se baseia em uma versão de pré-lançamento do Windows 7.Detalhes estão sujeitos a alterações.

Conteúdo

Bibliotecas média para usuários no Windows 7
Aplicativos de reconhecimento de biblioteca
Usando a caixa de diálogo comum do arquivo
Selecione e consumir bibliotecas como pastas
Modelo de programação do shell
Usando o modelo de programação do shell
Usando o IShellLibrary nova API
Bibliotecas nos bastidores
Suporte o modelo de biblioteca total
Resumo

Este é o primeiro artigo de uma série de artigos sobre Windows 7.A série se concentra no novo experiências do usuário que os desenvolvedores podem tocar para fazer seus aplicativos sobressaia no Windows 7.Neste artigo, a parte um, enfoca um conceito de armazenamento de perfil de usuário novo no Windows 7, chamado bibliotecas.Fazer o downloadWindows 7 versão RCAgora para ajudá-lo a obter o máximo proveito deste artigo.

Bibliotecas média para usuários no Windows 7

Antes de começar mergulhando na API de bibliotecas de 7 do Windows, é necessário para entender melhor por que as bibliotecas foram introduzidas no Windows 7 e como eles melhorar as experiências de usuários para gerenciar o seu conteúdo.Para entender melhor o conceito de bibliotecas do Windows 7, precisamos olha para trás no tempo.Versões anteriores do Windows, como o Windows Vista e no Windows XP, incluídos conjuntos de pastas especiais para armazenar conteúdo de usuários, como Meus documentos.Windows XP usado a constante especial item ID lista (CSIDL), que é uma lista de valores que fornecem uma maneira independente de sistema exclusiva identificar pastas especiais usadas com freqüência por aplicativos, mas que não podem ter o mesmo nome ou local em qualquer sistema determinado.

No período de Windows Vista, CSIDL evoluiu em um novo sistema de armazenamento chamado configuração IDs de pasta.Como do Windows Vista, as pastas especiais CSIDL são referenciadas por um conjunto de valores GUID.É importante Observe que o sistema CSIDL ainda é suportado no Windows Vista e Windows 7 para versões anteriores compatibilidade.Na lista de IDs de pasta configuração, você encontrará a pasta FOLDERID_Documents.Esta pasta representa tanto a pasta Meus documentos como parte o perfil de armazenamento de usuários e o FOLDERID_Fonts como parte das pastas especiais do sistema.No Windows 7, a lista de IDs de pasta configuração expandida para oferecer suporte a bibliotecas de 7 do Windows.Você pode encontrar, entre outras coisas, GUIDs como o FOLDERID_DocumentsLibrary que representa a biblioteca de documentos.No Windows Vista, essas pastas especiais automaticamente foram indexadas para permitir que os usuários executar operações de pesquisa mais rápida e mais eficiente em seu conteúdo.No entanto, encontramos se muitos arquivos de armazenamento de usuários em uma variedade de coloca no seu PC, não apenas nas pastas de perfil de usuário especial", mas também em várias pastas como c:\Minha pasta Temp, d:\Birthday2008\pictures, ou até mesmo no armazenamento remoto.Armazenando arquivos fora o espaço de armazenamento de usuários perfil afeta a indexação, que afetam a experiência de pesquisa do usuários.Nós geralmente localizar sozinhos procurando um arquivo específico que trabalhamos em apenas alguns dias atrás, esquecer onde é salvo, e, em seguida, descubra que a pesquisa está falhando para localizá-lo porque o arquivo nunca foi indexado.

Com o Windows 7, o conceito de bibliotecas tenta resolver o problema de usuários armazenar conteúdo completo sobre seus PCs, permitindo que eles têm controle total sobre sua estrutura de pasta de biblioteca de documentos.Em outras palavras, no Windows 7 usuários podem definir quais pastas a serem incluídas na biblioteca de documentos.Na verdade, isso é verdadeiro para qualquer biblioteca no Windows 7.Podemos dizer que as bibliotecas são coleções de definido pelo usuário das pastas que são representações lógicas de conteúdo do usuário.Incluindo pastas nas bibliotecas, o usuário está informando Windows onde se encontra suas própria dados importantes.O sistema indexará essas pastas, habilitando pesquisa mais rápida e muito mais sofisticada disposição de exibição recursos no Windows Explorer com base nas propriedades do arquivo e metadados.a Figura 1 exibe a integração de várias pastas em uma exibição única biblioteca e mostra a pesquisa rich e pivots do Windows Explorer no Windows 7.

fig01.gif

Figura 1 View de integração de várias pastas em uma única biblioteca

As bibliotecas são uma parte integral do Shell do Windows.Essa integração é muito importante porque ela permite que os usuários procurem seus arquivos da mesma forma como ele fariam em uma pasta, o que significa que não há nenhum novo comportamento que os usuários precisam aprender.Simplesmente clicar na biblioteca de documentos mostra todos os documentos em uma organização específica.Além disso, devido ao fato de que as bibliotecas estão integradas no shell do Windows, os usuários podem realizar operações de pesquisa e filtrar os resultados usando propriedades e os metadados, como a data a foto foi tirada, o gênero de música e popularidade do item.Em outras palavras, usando bibliotecas usuários obtém aproveitar o armazenamento de arquivo que é flexível e indexado.

Aplicativos de reconhecimento de biblioteca

Queremos Observe que enquanto a maioria dos aplicativos deve trabalham bem com bibliotecas de 7 do Windows, há uma oportunidade para tocar no ambiente de bibliotecas de 7 do Windows para oferecer experiências de usuário mais sofisticadas.Um pode estar se perguntando o que aconteceria se um aplicativo não tiver suporte para bibliotecas.Vamos imaginar um aplicativo que, como parte de sua funcionalidade, precisa para salvar um arquivo em disco.O aplicativo avisa ao usuário com a opção para selecionar um local para o arquivo a ser salvo.O usuário pode selecionar a biblioteca de documentos como sua ou ela salvar local, como se trata de onde o usuário normalmente vai quando ele ou ela precisa trabalhar em um documento.

No entanto, se o aplicativo não reconhece que a biblioteca de documentos não é uma pasta comum, o aplicativo irá tentar salvar o arquivo diretamente para a biblioteca de documentos como se ele é simplesmente outra pasta no disco.Isso representa um problema, desde então, por enquanto, já sabemos, bibliotecas são um local de sistema non–file e, portanto, não pode ser tratadas como pastas comuns.O aplicativo precisa ficar atento ao fato de que eles estão lidando com bibliotecas.Felizmente, Windows 7 inclui um atualizado API do Shell, API de bibliotecas e atualizado diálogo comum de arquivo que permitem aos desenvolvedores lidar corretamente com bibliotecas.

Um aplicativo com reconhecimento de biblioteca deve incluir os mecanismos de tratamento de situações em que os usuários inadvertidamente tentar separar bibliotecas como se eles fossem pastas para salvar arquivos em uma biblioteca ou carregar o conteúdo de uma biblioteca.Além disso, a maioria dos aplicativos permitem que os usuários interagir com o sistema de arquivos como parte da experiência de aplicativo.Um aplicativo deve fornecer usuários com a mesma pontos de entrada familiar e interface do usuário oferecidos pelas bibliotecas de 7 do Windows.Incluindo pastas em uma biblioteca, os usuários designar onde seus dados importantes são armazenados, informando que isso é o conteúdo nos importa.Aplicativos devem promover nesses locais com suporte a bibliotecas em seus aplicativos.

Para desenvolvedores, há vários pontos de integração com o Windows 7 que podem ajudar aplicativos tornam-se ciente de biblioteca.Os desenvolvedores devem examinar os seguintes três pontos de integração e selecione de acordo com suas necessidades.

  1. O ponto de integração mais básico é simplesmente usar a caixa de diálogo de arquivo comuns (CFD) para separar os arquivos e pastas e salvar diretamente em uma biblioteca.
  2. O segundo ponto de integração oferece a opção para sobressaia no Windows 7 habilitando aplicativos para selecionar e consumir o conteúdo de bibliotecas de aplicativos.
  3. O último ponto de integração fornece a mais avançada opção de integração de suportar o modelo de programação toda a biblioteca.

Usando a caixa de diálogo comum do arquivo

A boa notícia é que o Windows 7 bibliotecas são um cidadão de primeira classe no CFD, permitindo que os usuários procurar e pesquisar bibliotecas.Eles ainda podem selecionar uma biblioteca específica como um salvamento local que não seja apenas uma das pastas de dentro da biblioteca, mas em vez disso, a biblioteca!Como bibliotecas de 7 do Windows são copiados para armazenamento, os usuários podem salvar e copiar arquivos para qualquer pasta tenham permissões para incluídas em uma biblioteca.Cada biblioteca tem um padrão local para onde arquivos ir quando os usuários copiarem para salvar e salvar arquivos diretamente para a biblioteca.Por padrão, esse local será a pasta conhecida que acompanha um padrão de biblioteca ou a primeira pasta adicionados a uma biblioteca personalizada.

Mas (há sempre essa limitação!), é altamente recomendável usar a nova interface CFD que foi introduzida com o Windows Vista e não a versão herdada do CFD.É muito importante observar que as APIs para usar o CFD herdado não mudaram desde o Windows Vista e no Windows XP, por motivos de compatibilidade de aplicativo.No entanto, a versão herdada do CFD diretamente não dá suporte à bibliotecas ou a completa nova experiência do usuário oferecidos no Windows 7.a Figura 2 exibe o herdado e o novo CFD lado a lado.

fig02a.gif

fig02b.gif

A Figura 2 antigo e novo modo de exibição do novo diálogo comum de arquivo

Em CFD herdado, mesmo que as bibliotecas são apresentadas em Painel de navegação à direita, eles exigem um clique extra para salvar em um das pastas incluídas, em vez de apenas a biblioteca.Os usuários não podem pesquisar diretamente de dentro a CFD ou enfrentar os gerenciadores de visualização rich, nem selecionar vários arquivos em pastas, porque o CFD herdado não suporta retornar vários arquivos de locais de pasta diferente.Por outro lado, isso é um cenário que ofereça suporte a uma biblioteca de 7 do Windows.

É importante usar as APIs adequadas para mostrar a versão correta do CFD.Quando se trata a mostrar um CFD com. NET, os desenvolvedores podem usar o System.Windows.Forms.FileDialog ou o namespace Microsoft.Win32.FileDialog.Desde o último usa a versão herdada do CFD, os desenvolvedores .NET devem sempre usar o namespace WinForms para mostrar o novo CFD.a Figura 3 mostra um trecho de código que solicita ao usuário para escolher um salvamento local, mostrando o comum salvar caixa de diálogo arquivo, permitindo ao usuário selecionar pastas ou bibliotecas.

A Figura 3 SaveFileDialog arquivo

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; 
    }
}

Os desenvolvedores de código nativo devem usar a nova família de APIs nativas da interface IFileDialog: interface IFileDialog, IFileOpenDialog, IFileSaveDialog, IFileDialogCustomize, IFileDialogEvents, IFileDialogControlEvents. Isso substitui as APIs herdadas de versões anteriores do Windows: GetOpenFileName, GetSaveFileName.

A Figura 4 Mostra como usar a nova família de APIs nativas da interface IFileDialog para solicitar ao usuário um salvar caixa de diálogo para salvar em uma pasta/biblioteca.

A Figura 4 interface 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();
}

As APIs de nativas shell são baseados em COM. Antes de usar qualquer objeto COM é preciso inicializar o objeto de COM ao chamar CoCreateInstance. Após inicializar o * pfod IFileSaveDialog variável, é definir as opções de diálogo para escolher pastas, passando o sinalizador FOS_PICKFOLDERS para o IFileOpenDialog.SetOptions(). Esse código informa a caixa de diálogo abrir para permitir que o usuário selecionar pastas, em vez de arquivos e permite que o usuário escolha uma biblioteca como um salvamento local. No caso de escolher uma biblioteca, o CFD, em seguida, retornará o padrão de salvar a pasta local que está associado com escolhido biblioteca.

A Figura 3 e 4 da Figura são muito simples e não apresentar qualquer novo código. No entanto, é importante elevar a consistência entre os aplicativos executados no Windows 7 e no suporte de bibliotecas de 7 do Windows. O CFD é projetado para fornecer uma experiência consistente com o novo Windows Explorer, incluindo bibliotecas. Todos os aprimoramentos no Windows Explorer de 7 tiverem sido transportados para a CFD. Na maioria dos casos, ele é a maneira ideal para os usuários procurar e interagir com bibliotecas de dentro do aplicativo.

Selecione e consumir bibliotecas como pastas

Vamos imaginar uma ocorrência de um aplicativo de apresentação de slides que apresenta imagens para o usuário. Usando bibliotecas, o usuário está essencialmente informando o sistema que dele figuras importantes são armazenadas na biblioteca de imagens. O aplicativo simplesmente pode apontar diretamente para a biblioteca de imagens e mostrar a coleção inteira de imagens para o usuário. Além disso, do ponto de vista do desenvolvedor, usando o sistema de biblioteca pode eliminar a necessidade de manter um arquivo de configuração separada ou banco de dados de imagens, por exemplo, desde que os desenvolvedores podem depender do sistema de biblioteca. Antes de nós mergulhar nas bibliotecas de shell APIs de programação, precisamos entender alguns conceitos sobre o modelo de programação do shell.

Modelo de programação do shell

Um item do shell (IShellItem), normalmente conhecido como um item, é a moeda de interface do usuário da shell e seu modelo de programação. Os itens são fontes de conteúdo individual, independente. Por exemplo, bem como alguns dos métodos de interface usados para controlar CFDs usar itens de shell para se referir a pastas em vez de caminhos de sistema de arquivos. Isso é importante porque o CFD pode comunicar informações sobre pastas de sistema de arquivos e outras pastas virtuais que você encontrar no shell do, como o painel de controle ou a pasta do computador.

Outras interfaces COM shell importantes são:

  • Interface estiver representa um link, geralmente para um arquivo, pasta ou um executável
  • Interface IShellFolder representa objetos de pasta do shell do namespace shell. Usando IShellFolder você pode percorrer através do conteúdo de uma pasta, recuperar o nome de exibição de um item em uma pasta, analisar um nome para exibição em relação à pasta e obter uma lista de identificação do item

Windows 7 apresenta uma nova API do Shell, chamada IShellLibrary, que você pode consultar IShellItem para trabalhar e oferecer suporte a bibliotecas no Windows 7.

Agora que definimos os diferentes componentes do modelo de programação shell, podemos ver como bibliotecas se encaixam nesse modelo. Como bibliotecas não são locais de sistema de arquivos, não é possível usar arquivo system–specific APIs como FindFirstFile. Em vez disso, você tem duas opções principais para consumir o conteúdo de uma biblioteca.

Usando o modelo de programação do shell

Você pode usar as interfaces IShellItem e IShellFolder e um número de funções auxiliares para enumerar o conteúdo de bibliotecas, apenas como se fossem pastas comuns. Isso significa que aplicativos podem consumir o conteúdo de uma biblioteca sem usar a nova API de bibliotecas e com muito pouca alteração para sua base de código existente.

A Figura 5 mostra como usar a interface IShellFolder para enumerar todo o conteúdo da biblioteca de imagens.

A Figura 5 IShellFolder interface

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
          }
}

Aqui você pode ver que usando a função de auxiliar SHGetKnownFolderItem podemos recuperar o local correto da biblioteca, passando o FOLDERID_PicturesLibrary. Isso é um GUID que representa a pasta conhecida, que, no nosso caso, é a biblioteca de imagens. Uma chamada bem-sucedida preencherá o IShellItem * interface do psi com as informações corretas sobre a biblioteca, representada como um item do shell. O restante do código é shell padrão de programação, onde é usar o BindToHandler para ligar o item de shell obtido anteriormente a uma pasta do shell (conversão). Em seguida, nós enumerar entre os diferentes itens na pasta shell, que no caso de uma biblioteca podem ser arquivos ou pastas. O SHGetKnownFolderItem é uma função auxiliar do shell e faz parte de um grupo maior de funções auxiliares que pode ser encontrada no arquivo de cabeçalho shlobj.h no Windows 7 RC SDK. Observe o SHCONTF_FOLDERS | SHCONTF_NONFOLDERS sinalizadores estão passando. Isso está informando a pasta do shell que queremos retornar todos os arquivos e pastas em uma biblioteca. Foi passamos SHCONTF_NAVIGATION_ENUM para obter os locais de biblioteca em vez do conteúdo da biblioteca.

Usando o IShellLibrary nova API

Você pode obter a mesma funcionalidade mostrada na A Figura 5 usando a nova API de IShellLibrary de 7 do Windows, como mostrado na A Figura 6 .

A 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
}

Aqui você pode ver que usamos outra função de auxiliar, SHLoadLibraryFromKnownFolder, para criar o objeto IShellLibrary. Provenientes deste objeto pode chamamos o método GetFolders para retornar um IShellitemArray. Este retorno é usado posteriormente para obter um enumerador para atravessar através de todo o conteúdo da biblioteca de.

No último exemplo, usamos a função de auxiliar, SHLoadLibraryFromKnowFolder. Conforme mencionado anteriormente, essa função de auxiliar e outros relacionados a bibliotecas de 7 do Windows, podem ser encontrados no arquivo de cabeçalho shlobj.h no SDK do Windows 7 RC. Aqui está uma lista das biblioteca auxiliar funções importantes:

  • SHAddFolderPathToLibrary (adiciona uma pasta em uma biblioteca)
  • SHCreateLibrary (cria um objeto IShellLibrary)
  • SHLoadLibraryFromItem (cria e carrega um objeto IShellLibrary de um arquivo de definição de biblioteca especificada)
  • SHLoadLibraryFromKnownFolder (cria e carrega um objeto IShellLibrary para um KNOWNFOLDERID especificado)
  • SHLoadLibraryFromParsingName (cria e carrega um objeto IShellLibrary para um caminho especificado)
  • SHRemoveFolderPathFromLibrary (remove uma pasta de uma biblioteca)
  • SHResolveFolderPathInLibrary (tentativas para resolver o local de destino de uma pasta biblioteca que tenha sido movido ou renomeado)
  • SHSaveLibraryInFolderPath (salva um objeto IShellLibrary em disco)

Vamos rever o seguinte (de código A Figura 7 ) que usa algumas dessas funções auxiliares para criar uma nova biblioteca, associa uma pasta com essa biblioteca e, "salva" a biblioteca na pasta de bibliotecas.

A Figura 7 IShellLibrary usando a função de auxiliar 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();
}

Aqui você pode ver que estamos criando um novo objeto de IShellLibrary usando a função de auxiliar SHCreateLibrary. Em seguida, adicionamos a pasta documentos pública ao objeto de biblioteca. Em seguida, nós salve a nova biblioteca de na pasta bibliotecas, com o restante das bibliotecas e atribua o nome da minha biblioteca nova a ele.

Na Figura 7 , nós usamos o método SaveInKnownFolder da interface IShellLibrary para salvar a nova biblioteca que acabamos de criar. A maioria dos métodos na interface do IShellLibrary são auto-explicativos. No entanto, vamos examinar alguns que exigem nossa atenção:

  • O método Commit confirma as alterações de biblioteca para um arquivo de biblioteca existente. Isso significa que, sempre que você programaticamente alterar uma biblioteca, você precisa chamar o método de confirmação para salvar as alterações.
  • O método SetIcon tem um nome DLL de recurso e o índice do ícone para definir o ícone de biblioteca.
  • O SetFolderType recebe um GUID de modelos de tipo de pasta conhecido como um parâmetro de entrada. Esse GUID define o tipo da biblioteca, que pode ser um destes procedimentos: genérico, imagens, música, vídeo e documentos. Definir o modelo de tipo de pasta altera o modo de exibição Windows Explorer da biblioteca e permite a pesquisa e opções de exibição essencial que são específicas para o tipo de biblioteca.

Bibliotecas nos bastidores

Conforme mostrado na Figura 7 , o código cria um novo arquivo de biblioteca na pasta bibliotecas. Uma biblioteca no Windows 7 é armazenada como um arquivo de definição XML que tem uma extensão de arquivo de .Library-ms. O nome do arquivo é o nome real da biblioteca. Por exemplo, a biblioteca de documentos é representada por um arquivo XML chamado Documents.library-ms. Descrições de biblioteca são salvas no disco na pasta %appdata%\Microsoft\Windows\Libraries (também conhecido como FOLDERID_Libraries).

Vamos sobre para o esquema de arquivo de definição de biblioteca de documentos. A estrutura XML é bastante auto-explicativo, mas vamos explicar alguns dos seus elementos. Conforme mostrado na Figura 8 , na parte superior do arquivo pode encontrar as informações de "cabeçalho" de biblioteca:

A Figura 8 documentos biblioteca Definition File Schema

<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>

O elemento XML raiz é libraryDescription, que contém elementos filho que definem a biblioteca, da seguinte maneira:

  • <ownersid> define a identificação de segurança do usuário que criou esta biblioteca para isolar as bibliotecas e proteger os dados do usuário de outros usuários.
  • <islibrarypinned> é um elemento booleano que define se a biblioteca é fixada para o painel de navegação à esquerda no Windows Explorer e não para a barra de tarefas.
  • <version><versão> define a versão de conteúdo da biblioteca, que reflete o número de vezes que o arquivo de definição de biblioteca foi alterado.
  • <templateinfo> é um elemento de contêiner opcional que permite que o autor especificar o tipo de pasta (documentos, imagens, vídeo) para controlar as organizações de modos de exibição no Windows Explorer.
  • <iconreference> define um recurso de ícone usando o estilo de recurso de shell do Windows padrão. Por exemplo:

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

Este ícone apresenta a biblioteca no Windows Explorer.

Os usuários não é possível alterar o ícone de bibliotecas padrão pelo Windows Explorer, nem eles podem atribuir o ícone para uma nova biblioteca definido pelo usuário personalizada. No entanto, isso pode ser feito por meio de programação utilizando a API, que abordaremos em partes futuras desta série.

Uma parte importante o XML é a lista de locais que a biblioteca representa, como mostrado no código a seguir:

<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> contém um ou mais conectores de pesquisa que mapeiam para locais físicos incluídos na biblioteca.
  • <searchconnectordescription> contém um elemento simpleLocation que descreve um único local incluído na biblioteca.
  • <url> define uma URL para este local. Para humanos-leitura somente, isso não pode ser usado pelos desenvolvedores, pois é provável que haja desatualizado.
  • <serialized> é a representação real de um local em uma biblioteca que é um objeto ShellLink serializado.

Uma observação final: aplicativos devem nunca tentar acessar ou editar arquivos de descrição de biblioteca. Em vez disso, aplicativos sempre devem usar o Shell de programação do modelo ou a API IShellLibrary para consumir e manipular o conteúdo da biblioteca.

Suporte o modelo de biblioteca total

Um usuário pode adicionar, remover e reordenar locais, bem como alterar o padrão local por meio a INTERFACE de gerenciamento de biblioteca de salvamento. Isso é mostrado na Figura 9 , que está disponível diretamente do Windows Explorer.

fig09.gif

A Figura 9 gerenciamento biblioteca da interface do usuário

Além disso, locais de biblioteca podem ser modificados por meio da interface IShellLibrary. Qualquer alteração em uma estrutura de biblioteca é refletida no arquivo de definição de biblioteca e persiste diretamente para o arquivo .Library-ms subjacente. Você pode ser informado de que essas alterações, monitorando quaisquer alterações no arquivo .Library-ms. Considerar o aplicativo é contar com o conteúdo de uma biblioteca, ou seu aplicativo no momento está exibindo o conteúdo de uma biblioteca determinada. Você deseja ser notificado depois que o conteúdo da biblioteca é alterado. Aplicativos que deseja ser notificado sobre alterações no arquivo de definição de biblioteca podem fazer isso usando a função de auxiliar nativa SHChangeNotifyRegister shell ou usando o FileSystemWatcher gerenciado encontrada no namespace System.IO. Usando essas interfaces está check-out do escopo deste artigo uma vez que eles não são novas APIs e bem documentados.

Outra opção a considerar é o caso em que seu aplicativo precisa gerenciar pastas para usuários, como adicionar uma nova pasta de imagens para o repositório de imagem. Se você estiver usando a biblioteca de imagens, você pode usar a caixa de diálogo biblioteca gerenciamento em seu aplicativo para mostrar a caixa de diálogo mesma que Windows 7 oferece aos usuários para gerenciar suas bibliotecas. Ao fazer isso, você pode manter uma aparência consistente e o comportamento que o usuário aumenta para apreciar. Se você optar por usar a interface de diálogo de gerenciamento de biblioteca, as alterações a biblioteca serão feitas como se você estava modificando o conteúdo da biblioteca diretamente no Windows Explorer. Esta caixa de diálogo não retornará nenhuma informação ao seu aplicativo. No caso de você está mostrando o conteúdo de uma biblioteca determinada, você precisará registrar de notificação para receber atualizações, conforme explicado acima.

Resumo

Neste artigo, você foram apresentados ao conceito e modelo de programação de bibliotecas do Windows 7. Você examinar a importante função bibliotecas como parte da experiência do usuário Windows 7. Em seguida, você fez uma profundidade-mergulhar em bibliotecas, Noções básicas sobre quais são as bibliotecas e explorando sua arquitetura subjacente suporte. Em seguida, você viu as oportunidades diferentes que os desenvolvedores precisam, fazer seus aplicativos com reconhecimento de biblioteca. Finalmente, você entrou por meio de um tour curto dos diferentes modelos de programação disponíveis e as APIs.

Yochay Kiriaty é um divulgador técnico na Microsoft, e se concentra no Windows 7. Ele tem mais de uma década de experiência no desenvolvimento de software. Ele escreveu e ciência acadêmico taught courses e é um colaborador ativo O blog do Windows.

Alon Fliess é o grupo de CTO de Sela. Sela tem um registro de controle de 18 anos de sucesso em IT treinamento e é reconhecida como líder de ’s Israel no treinamento de alta qualidade a equipe de TI. Alon tem uma compreensão profunda de tecnologia do computador e contém um diploma de BSc de elétricos e engenharia de computador de Technion, Israel Institute of Technology. Alon foi de programação e ensinar dos últimos 22 anos e é um especialista em muitas tecnologias Microsoft, especialmente internos do Windows, programação C++ Win32 e .NET com C# ou C + c++ / CLI.