A história do desenvolvedor do Windows Vista: desenvolvendo para o Shell do Windows

Artigos técnicos sobre o Windows Vista

Publicado em: 26 de abril de 2007

Microsoft Corporation

Aplica-se ao:

Microsoft Office Outlook 2007

Nesta página

Introdução
Desenvolvendo com caixas de diálogo comuns de arquivo
Desenvolvendo para o DWM (Desktop Window Manager, Gerenciador de Janelas da Área de Trabalho)
Desenvolvendo com Windows Explorer
Desenvolvendo com Internet Explorer
Novas interfaces do Shell para Windows Vista
Novas funções do Shell para Windows Vista
Outros links úteis

Resumo:A História do desenvolvedor do Windows Vista inclui conteúdo para desenvolvedores, bem como outros especialistas em tecnologia e gerentes da área, que estejam interessados em uma exploração detalhada dos recursos novos e aprimorados do Windows Vista. Ela foi lançada no Windows Vista Developer Center na forma de breves artigos, publicados a cada duas semanas, aproximadamente. Muitos desses artigos são apenas um resumo do arquivo de Ajuda do Microsoft Windows, cujo download pode ser feito por aqui. Para localizar este arquivo no arquivo de Ajuda obtido por download, expanda Conceitos básicos, expanda Shell do Windows (Windows Vista) e, em seguida, expanda e clique em Desenvolvimento do Shell do Windows. (8 páginas impressas)

Observação: para fazer comentários sobre os artigos, envie um email para Vistadev@microsoft.com.

Conteúdo

Introdução

O Shell do Windows é o contêiner no qual toda a interface do usuário do Windows Vista é apresentada, inclusive a barra de tarefas, a área de trabalho, o Windows Explorer e muitas das caixas de diálogo e controles de interface.

Na versão 3.0 do Microsoft Windows, o Shell original foi implementado como uma DLL Win16 nativa com uma API correspondente; além disso, apresentava várias janelas de sobreposição e o Gerenciador de programas para navegação e gerenciamento do sistema de arquivos. O Microsoft Windows 95 apresentou muitas melhorias na interface do usuário, um novo Windows Explorer e uma nova plataforma baseada em COM e APIs correspondentes. A versão 3 do Microsoft Internet Explorer acrescentou atalhos de Internet e extensões do navegador. Cada versão subseqüente do Windows e do Internet Explorer resultaram em recursos adicionais e em uma expansão correspondente das APIs do Win32 e do COM. O tempo de execução do Shell é distribuído em várias DLLs (Dynamic-Link Libraries, bibliotecas de vínculo dinâmico). Para obter mais informações, consulte “Estratégia para o Shell do Windows” no SDK do Windows.

Os recursos do Shell no Windows Vista que manipulam dados e metadados incluem o Gerenciador de sincronização, os Ícones dinâmicos, a Visualização avançada e os manipuladores de propriedades. O desenvolvimento para o Painel de controle é abordado na seção Gerenciamento do Windows Vista de “Conceitos básicos” no SDK do Windows. Para obter mais informações, consulte “Desenvolvendo para o Painel de controle” na biblioteca MSDN.

Este artigo oferece informações sobre as alterações nas seguintes áreas:

  • Desenvolvimento com caixas de diálogo comuns de arquivo − descreve como programar caixas de diálogo comuns: arquivo genérico, abrir arquivo e salvar arquivo. Essas caixas de diálogo são novas no Windows Vista.

  • Desenvolvimento para o DWM (Desktop Window Manager, Gerenciador de Janelas da Área de Trabalho) − descreve o novo mecanismo para gerenciamento do layout visual e exibição de janelas na área de trabalho, além de introduzir um novo conjunto de APIs do Shell.

  • Desenvolvimento com Windows Explorer − descreve a arquitetura do novo Windows Vista Explorer e como os desenvolvedores podem fazer um melhor uso de seus componentes. O desenvolvimento com o Internet Explorer (IE) apresenta a plataforma do IE, mostra como o desenvolver pode aproveitar a plataforma e relaciona as principais alterações no IE 7.

  • Desenvolvimento com o Internet Explorer − descreve as principais alterações na interface do usuário e na funcionalidade do IE 7; além disso, descreve como os desenvolvedores de software podem interagir com o IE e estendê-lo.

  • Novas interfaces do Shell − por categoria, relaciona as novas interfaces do Shell para o Windows Vista.

  • Novas funções do Shell − fornece uma lista agrupada das novas funções do Shell no Windows Vista.

Desenvolvendo com caixas de diálogo comuns de arquivo

O Windows Vista fornece uma visão atualizada da caixa de diálogo comum de arquivo para atender às necessidades da maioria dos desenvolvedores. Esse recurso não somente é eficiente, mas também foi desenvolvido para oferecer suporte à personalização e à extensibilidade. O Shell do Windows Vista fornece acesso a essas novas caixas de diálogo de arquivo por meio da interface IFileDialog e das interfaces relacionadas. Os aplicativos do .NET Framework 3.0 para Windows Vista podem acessar essa funcionalidade por meio do suporte à interoperabilidade no SDK do Windows. Para obter mais informações, consulte “Interoperabilidade e migração” na biblioteca MSDN.

Usando um objeto da caixa de diálogo comum de arquivo

Os aplicativos que devem criar uma instância da caixa de diálogo comum de arquivo precisam obter uma das seguintes interfaces:

  • IFileDialog − a interface mais genérica e a interface pai das duas seguintes.

  • IFileOpenDialog − estende a interface IFileDialog para permitir que os aplicativos controlem aspectos específicos das operações de abertura, como a seleção de vários itens.

  • IFileSaveDialog − manipula as operações de salvar como e funciona com metadados.

Todas as caixas de diálogo de arquivo são modais. Os métodos nessas classes permitem que os desenvolvedores obtenham e definam elementos de interface do usuário da caixa de diálogo (como SetTitle, SetDefaultFolder, SetFileTypes e GetCurrentSelection), que são característicos do uso de caixas de diálogo. Muitos dos comportamentos padronizados da caixa de diálogo podem ser controlados por meio dos métodos GetOptions e SetOptions usando um conjunto de sinalizadores de bit. Essas opções podem ser definidas somente antes da exibição de uma caixa de diálogo; caso contrário, o método SetOptions retornará um erro. A seleção de usuário final pode ser recuperada com o método GetResult ou usando IFileOpenDialog quando a opção FOS_ALLOWMULTISELECT estiver habilitada.

Trabalhando com eventos da caixa de diálogo de arquivo

Embora a instanciação de um objeto da caixa de diálogo de arquivo forneça a interface do usuário e a funcionalidade principais da caixa de diálogo comum de arquivo correspondente, em alguns clientes o uso prático dessas caixas de diálogo requer que os desenvolvedores acessem os eventos gerados pelas operações da caixa de diálogo ou os controles individuais da caixa de diálogo.

A interface IFileDialogEvents fornece métodos que sinalizam ações do usuário e métodos que permitem a notificação de eventos em uma caixa de diálogo comum de arquivo. Para obter mais informações sobre como trabalhar com eventos da caixa de diálogo de arquivo, consulte o arquivo de Ajuda obtido por download, cujo download pode ser feito aqui. Para localizar este arquivo no arquivo de Ajuda obtido por download, expanda Conceitos básicos, expanda Shell do Windows (Windows Vista) e, em seguida, expanda e clique em Desenvolvimento do Shell do Windows.

Personalizando uma caixa de diálogo comum de arquivo

Além das personalizações de interface do usuário e de comportamento que podem ser realizadas por meio da interface da caixa de diálogo principal e das interfaces de evento, a interface IFileDialogCustomize fornecida permite que os desenvolvedores acrescentem controles comuns adicionais à caixa de diálogo, acima ou abaixo do conjunto de controles padrão dessa caixa de diálogo. Esses controles incluem PushButton, ComboBox, EditBox, CheckBox e RadioButtonList. Para obter mais informações sobre como personalizar uma caixa de diálogo comum de arquivo, consulte o arquivo de Ajuda obtido por download, cujo download pode ser feito aqui. Para localizar este arquivo no arquivo de Ajuda obtido por download, expanda Conceitos básicos, expanda Shell do Windows (Windows Vista) e, em seguida, expanda e clique em Desenvolvimento do Shell do Windows.

Desenvolvendo para o DWM (Desktop Window Manager, Gerenciador de Janelas da Área de Trabalho)

O DWM (Desktop Window Manager) é o novo componente no Windows Vista que gerencia o layout visual e a exibição da área de trabalho do Windows Vista Desktop, além de orquestrar a exibição das janelas dos aplicativos. Nas versões anteriores do Windows, os aplicativos desenham diretamente no dispositivo de vídeo. O DWM utiliza a bold composição da área de trabalho para desenhar uma superfície − como a janela de um aplicativo − em um buffer fora da tela, antes de ser composta com todas as outras superfícies para processar na área de trabalho. Para obter mais informações sobre como desenvolver para DWM, consulte o arquivo de Ajuda obtido por download, cujo download pode ser feito aqui. Para localizar este arquivo no arquivo de Ajuda obtido por download, expanda Conceitos básicos, expanda Shell do Windows (Windows Vista) e, em seguida, expanda e clique em Desenvolvimento do Shell do Windows.

Desenvolvendo com Windows Explorer

O Windows Explorer no Windows Vista é um eficiente aplicativo de navegação e gerenciamento de recursos. O Windows Explorer pode ser acessado como uma integração total por meio do Explorer.exe ou da interface do Shell IExplorerBrowser.

O Windows Explorer (Explorer.exe) pode ser gerado como um processo separado usando a função ShellExecuteEx ou outra função semelhante. As opções da linha de comando são documentadas no site Ajuda e Suporte da Microsoft no artigo “Opções da linha de comando do Windows Explorer”.

As janelas Abrir do Explorer podem ser detectadas e programadas usando IShellWindows/CLSID_ShellWindows, e as novas instâncias do Windows Explorer podem ser criadas usando IWebBrowser2/CLSID_ShellBrowserWindow.

Um exemplo de código C++, o qual demonstra como o modelo de automação do Windows Explorer pode ser utilizado para criar e detectar janelas do Explorer que estão em execução, pode ser localizado no arquivo de Ajuda obtido por download, cujo download pode ser feito aqui. Para localizar este arquivo no arquivo de Ajuda obtido por download, expanda Conceitos básicos, expanda Shell do Windows (Windows Vista) e, em seguida, expanda e clique em Desenvolvimento do Shell do Windows.

A área do cliente Windows Explorer pode ser hospedada usando a interface do Shell IExplorerBrowser. O cliente Windows Explorer e os controles da árvore de namespace são componentes padrão do Windows Vista, e essas interfaces são públicas. Portanto, os desenvolvedores podem reutilizar as interfaces como componentes de criação. Um uso comum desses controles é criar exploradores personalizados apropriados para o domínio problemático.

Os controles no Windows Explorer são classificados nas seguintes categorias funcionais: controles de Navegação, controles de Comando, controles de Propriedade e visualização, controles de Filtragem e de exibição e controle Listview.

Controles de navegação

Os controles de navegação auxiliam os usuários na determinação do contexto e na navegação no espaço de domínio lógico associado, o qual é denominado pagespace. Por exemplo, o pagespace do Windows Explorer é o namespace do Shell. Os pagespaces são compostos de zero ou mais páginas.

A tabela a seguir relaciona e descreve os controles de Navegação disponíveis no Windows Explorer, no sistema operacional Windows Vista.

Controle de navegação

Descrição

Barra de endereços (controle de trilha)

Exibe o endereço da página atual no pagespace. É possível clicar nos botões de trilha para navegar um nível acima em qualquer predecessor no pagespace. Os usuários ainda podem digitar URLs e caminhos para navegar.

Árvore de pastas

Fornece uma nova versão de um controle de árvore, otimizado para grandes pagespaces.

Navegação

Habilita a navegação relativa por meio de botões no estilo da Web, como Voltar e Avançar.

Título

Exibe o nome e o contexto atuais do Explorer.

Pagespace

Exibe o ramo atual do pagespace. As páginas são ordenadas por diferentes critérios. Os usuários podem clicar em uma página para navegar nela.

Controles de comando

Os comandos de controle anunciam os recursos e a funcionalidade do Explorer aos usuários; além disso, executam ações gerais ou ações que são específicas ao item ou itens selecionados.

Controle de comando

Descrição

Barra de ferramentas

Exibe botões para os comandos comumente utilizados (uma nova versão de uma barra de ferramentas de comando). As opções de personalização incluem botões suspensos, botões de divisão, texto descritivo opcional e uma área de excedentes.

Herói

Aparece como um único controle opcional personalizado no centro da Barra de ferramentas. Representa o principal comando do contexto atual.

Barra de menus

Apresenta os comandos por meio de menus (controle herdado no Windows Explorer).

Menu de contexto

Relaciona um subconjunto relevante contextualmente de comandos disponíveis, que são exibidos como resultado de um clique com o botão direito do mouse.

Controles de propriedade e de visualização

Os controles de propriedade e de visualização são utilizados para visualizar itens, bem como visualizar e editar propriedades dos itens.

Controle

Descrição

Visualizar

Exibe uma visualização do item selecionado, como uma miniatura ou um ícone dinâmico.

Propriedades

Exibe propriedades do item selecionado. Para várias seleções, ele exibe um resumo das propriedades do grupo selecionado de itens. Para seleção nula, ele exibe um resumo das propriedades da página atual (conteúdo de listview).

Controles de filtragem e de exibição

Os controles de filtragem e de exibição são utilizados para manipular o conjunto de itens na listview, bem como para alterar a apresentação dos itens na listview.

Controle

Descrição

Filtro

Filtra ou distribui itens na listview, com base nas propriedades relacionadas como colunas. Clicar em uma coluna efetuará a classificação por essa propriedade.

Wordwheel

Filtra de forma dinâmica e gradual os itens exibidos na listview, com base na cadeia de caracteres de texto de entrada.

Exibir

Permite que o usuário altere o modo de exibição do controle Listview. Além disso, é possível utilizar um controle deslizante para determinar o tamanho do ícone.

Controle Listview

O controle Listview é utilizado para exibir um conjunto de itens em um dos quatro modos de exibição: detalhes, títulos, ícones ou panorama. O controle Listview também permite que o usuário interaja com um ou mais itens por meio da seleção e da ativação.

Cuidado: embora alguns desses controles tenham nomes e/ou funcionalidade que são semelhantes aos controles padrão do WPF (Windows Presentation Foundation) localizados no namespace System.Windows.Controls, eles são classes distintas.

Esses controles separados são vinculados amplamente por meio de eventos gerados pela interação com o usuário ou pelos próprios controles. Essas principais categorias de eventos incluem as seguintes:

Categoria de eventos

Exemplo

Navegação

De uma página para outra

Seleção

Alterando a seleção atual na listview

Alterar o modo de exibição

Alterando a ordem de apresentação ou modo de exibição na listview

Com um conjunto tão avançado e funcional de controles nos quais desenhar, os desenvolvedores podem se concentrar na descrição de seus pagespace e na implementação do comportamento associado ao seu conteúdo.

No momento da publicação deste artigo, o SDK do Windows ainda não apresentava uma documentação sobre esses controles do Explorer; no entanto, o exemplo de ExplorerBrowserAPI é fornecido no diretório de exemplos.

Desenvolvendo com Internet Explorer

Além de ser o principal navegador da Web, o Microsoft Internet Explorer (IE) é uma complexa e eficiente plataforma para o desenvolvimento de software independente. Os desenvolvedores podem interagir com o IE e estendê-lo por meio de vários métodos e tecnologias, inclusive os seguintes:

  • Instâncias geradas

  • Instâncias automatizadas

  • Protocolos conectáveis assíncronos

  • Extensões do navegador

  • BHOs (Browser Helper Objects, Objetos Auxiliares de Navegador)

  • Download de componente

  • Execução remota de aplicativo

  • Reutilização de componente

Instâncias geradas

Muitos aplicativos geram uma instância do IE para exibir um recurso conhecido – por exemplo, navegar em uma página da Web ou exibir um arquivo HTML local. É possível realizar isso usando a função ShellExecute para executar diretamente o IExplore.exe ou abrindo indiretamente um arquivo de dados associado ao IE no computador atual – por exemplo, um arquivo .html. A última opção pressupõe que o IE seja o navegador padrão. O mesmo pode ser realizado em um aplicativo gerenciado usando a função System.Diagnostics.Process.Start.

Instâncias automatizadas

Um controle rigoroso em uma instância do IE é disponibilizado por meio do objeto de automação COM do InternetExplorer.

Protocolos conectáveis assíncronos

Uma API baseada em COM habilita a criação de manipuladores de protocolo personalizáveis e conectáveis, filtros de MIME e manipuladores de namespace. Dessa forma, o IE pode ser estendido para compreender os novos protocolos de comunicação e formatos de documentos.

Extensões do navegador

As extensões do navegador possibilitam que os desenvolvedores modifiquem a interface do usuário do IE ao acrescentar barras personalizadas do Explorer, novas entradas de menu de contexto, comandos do menu Ferramentas e botões associados da barra de ferramentas.

BHOs (Browser Helper Objects, Objetos Auxiliares de Navegador)

Os BHOs possibilitam a extensão do IE com componentes COM personalizados e em processo. Os BHOs são carregados sempre que o IE for iniciado. Eles podem executar qualquer ação nas janelas e módulos disponíveis do IE – incluindo a personalização da interface do usuário do navegador, a manipulação de eventos, a conexão de mensagens e a interpretação de formatos personalizados de dados.

Download de componente

O IE pode ser utilizado para distribuir componentes – como os controles Microsoft ActiveX (.ocx), arquivos de biblioteca de vínculo dinâmico (.dll), executáveis e arquivos ou applets de classe Java – para computadores cliente para uso por demanda ou cenários de instalação permanente. O IE é compatível com arquivos assinados de gabinete (.cab) para conjuntos de distribuição de pacote, arquivos de informações (.inf) para o fornecimento de instruções de instalação e um arquivo Open Software Description (OSD) para a descrição de componentes de software e suas relações.

Execução remota de aplicativo

As tecnologias de servidor cliente – como Microsoft ASP.NET ou controle ActiveX de conexão da web da área de trabalho remota de serviços de terminal – permitem que o IE hospede aplicativos executados (pelo menos parcialmente) em um servidor.

Reutilização de componente

A arquitetura modular do IE fornece aos desenvolvedores vários controles ActiveX avançados e reutilizáveis, os quais podem ser usados em aplicativos independentes. Os mais comuns são o controle WebBrowser (Shdocvw.dll), o qual fornece um mininavegador com navegação e histórico, e o Mshtml.dll, que é o principal mecanismo que manipula a exibição e análise de HTML.

Muito mais recursos e serviços e ferramentas associadas estão vinculados ao IE, como o Editor de MSHTML, o analisador de MSXML (Microsoft XML Core Services) e a Arquitetura de hiperlinks. Para obter mais informações, consulte “Desenvolvimento do Internet Explorer” na biblioteca MSDN e consulte o Internet Explorer Developer Center.

O que há de novo no Internet Explorer 7?

Muitas alterações importantes foram realizadas em toda a interface do usuário e funcionalidade do IE 7. As alterações aparecem especialmente nas áreas de segurança e de protocolo atualizado, bem como no suporte a padrões.

As seguintes alterações foram realizadas considerando os desenvolvedores de software:

  • Novo suporte a web feed – o IE 7 oferece principalmente suporte ao RSS feed e ao ATOM feed em sua interface e por meio de sua integração com o Microsoft Web Feeds API. Para obter mais informações, consulte “RSS no Windows Vista” na biblioteca MSDN.

  • Filtro de Phishing da Microsoft – o IE 7 inclui a funcionalidade para proteção de usuários contra ataques de phishing a partir de sites hostis. Um Filtro de Phishing completo, incluindo o recurso para que os administradores do sistema definam uma diretiva de grupo para toda a rede, está disponível no IE 7 para todas as plataformas. Os desenvolvedores de sites da Web com “bom comportamento” se beneficiam muito do Filtro de Phishing, pois os usuários confiarão no controle adicional que possuem em seu ambiente.

  • Navegador por guias – este aprimoramento da interface para usuários também aparece nas alterações ao DOM (Document Object Model, Modelo de Objeto de Documento) do IE e às APIs associadas. Para obter mais informações, consulte “Navegação por guias para desenvolvedores” na biblioteca MSDN.

  • Melhor suporte aos padrões existentes – foram aprimorados o suporte a IDN (Internationalized Domain Name, nome de domínio internacional), HTML 4.0.1, folhas de estilo em cascata e PNG (Portable Network Graphics).

  • Modo protegido – no Windows Vista, o Modo protegido reduz a gravidade de ameaças ao IE e às extensões executadas nele através da eliminação do recurso de instalação silenciosa de código malicioso por meio de vulnerabilidades do software. O IE 7 utiliza o mecanismo de integridade do Windows Vista e o Isolamento de privilégio de interface de usuário (UIPI, User Interface Privilege Isolation), a fim de bloquear a interação a partir do IE aos recursos e aplicativos do sistema com integridade superior. Embora o Windows Vista e o IE tenham recursos de suporte a versões anteriores de aplicativos, todos os aplicativos novos e existentes devem ser totalmente testados no Windows Vista com IE 7.

  • Suporte a XMLHTTP nativo – o IE 7 implementa uma versão do XMLHTTP que é um objeto nativo e programável, em vez de um objeto. Agora, os usuários podem desativar os controles ActiveX e ainda assim manter uma conexão do lado cliente com um servidor, de forma que as transações dinâmicas que utilizam os dados XML possam continuar sendo executadas no em segundo plano. Isso permite que novos dados recuperados dinamicamente sejam inseridos em uma página HTML atual, que de outra forma seria estática.

  • Controle de seleção sem janelas – embora essa alteração permita que a ordenação Z e o zoom funcionem corretamente, os aplicativos existentes que dependem do HWND deste controle devem ser reescritos para usar DOM.

Para obter informações, consulte “O que há de novo no Internet Explorer 7” na biblioteca MSDN.

Novas interfaces do Shell para Windows Vista

Um amplo conjunto de interfaces COM foi acrescentado ao Shell no Windows Vista; essas interfaces estendem extremamente os seus recursos internos. Para obter mais informações sobre as novas interfaces do Shell para Windows Vista, consulte o arquivo de Ajuda obtido por download, cujo download pode ser feito aqui. Para localizar este arquivo no arquivo de Ajuda obtido por download, expanda Conceitos básicos, expanda Shell do Windows (Windows Vista) e, em seguida, expanda e clique em Desenvolvimento do Shell do Windows.

Novas funções do Shell para Windows Vista

Um amplo conjunto de funções do Win32, o modelo de programação não gerenciado do sistema operacional Microsoft Windows, foi acrescentado à API do Shell no Windows Vista. Para obter mais informações sobre as novas funções do Shell para Windows Vista, consulte o arquivo de Ajuda obtido por download, cujo download pode ser feito aqui. Para localizar este arquivo no arquivo de Ajuda obtido por download, expanda Conceitos básicos, expanda Shell do Windows (Windows Vista) e, em seguida, expanda e clique em Desenvolvimento do Shell do Windows.

Outros links úteis

A história do desenvolvedor do Windows Vista: Windows Shell (Windows Vista)

 

Mostrar: