Welcome to MSDN Blogs Sign in | Join | Help

Alex Schulz

Especialista em Desenvolvimento
Resumo do Professional Developer Conference (PDC) 2009

Caros,

semana passada aconteceu o PDC 09 em Los Angeles. Um evento muito bacana com muitas novidades (mais evolucionárias do que revolucionárias, como falado no resumo do evento feito por Waldemir Cambiucci).

Recomento fortemente a visita ao blog do Waldemir para ver o resumo do evento.

[]s

Alex Schulz

SharePoint 2010: Fluxo entre as ferramentas

Tanto o SharePoint Designer 2010, quanto Visual Studio 2010 trazem grandes melhorias para o desenvolvimento no SharePoint 2010.

O SharePoint Designer 2010 saiu de um modelo orientado a página e foi para um modelo orientado a features. Com isso ele passa a ser a ferramenta para a construção de aplicações completas, ricas reusáveis e com integração com dados externos. O foco dessa ferramenta são principalmente os “Power Users” e num segundo plano os desenvolvedores (para um desenvolvimento rápido e prototipação).

Já o Visual Studio 2010 trás muitos templates de projeto / itens focados no SharePoint 2010, o SharePoint Explorer, onde é possível ter acesso (somente leitura) ao site collection, desenvolvimento visual de Features, Templates de Listas, Workflows, e Content Types, melhorias no processo de debugging e deploy, integração com o TFS e soluções “sandboxed”.

Dessa forma, podemos definir um fluxo de desenvolvimento e uso das ferramentas como na figura abaixo, onde podemos utilizar o SharePoint Designer para as primeiras customizações (depois de já ter sido feitas as customizações / parametrizações no próprio browser), salvar o site como template e importa-lo no Visual Studio. Após as customizações no Visual Studio, é feita a atualização no site através da infra-estrutura de upgrade.

image

Pelo que estudei e vi até o momento, o SharePoint Designer 2010 trouxe muitas possibilidades para o desenvolvimento SharePoint, e com isso acredito que temos que aprender a explorar esse potencial para as customizações mais básicas (que incluem até acesso a dados externos ao SharePoint), indo pro Visual Studio quando realmente for necessário (e com o modelo de WSP tanto do site template e da importação do Visual Studio podemos efetivamente integrar o desenvolvimento nas duas ferramentas).

[]s

Alex Schulz

SharePoint 2010 – Beta disponível para download

Caros,

acaba de ser liberado o download público para o Beta do SharePoin 2010 (todas as suas versões e mais o management pack). Abaixo os links:

SharePoint Foundation 2010 (Windows SharePoint Services 2010 Beta) - http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=906c9f5a-6505-4eba-bf24-95e423ac1703

Microsoft SharePoint Server Enterprise 2010 Beta - http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=77c30c6c-47fc-416d-88e7-8122534b3f37

Microsoft SharePoint 2010 Products (Beta) Management Pack - http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=c8a9d749-b7a8-412a-b2db-f3e464ed3fcf

Microsoft SharePoint Foundation 2010 (Beta) Management Pack - http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=43d5ee9a-b9a6-441d-a35e-8a7b9b15e20c

Microsoft FAST Search Server 2010 for SharePoint Beta - http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bcc37c48-11fb-40a2-8cfb-743de20260f6

Microsoft SharePoint Server for Internet Sites Enterprise 2010 Beta - http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=580fc452-4948-44ab-9995-a0599271ad48

Microsoft SharePoint Designer 2010 Beta (64-bit) - http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=eeda9ab1-ac53-4870-9e1c-38940343d677

Microsoft SharePoint Designer 2010 Beta (32-bit) - http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=82df15bd-16a5-460e-a7c4-22599c669bb1

[]s

Alex Schulz

SharePoint Foundation 2010

Algumas mudanças aconteceram com os nomes das SKUs do SharePoint 2010, e com essas mudanças surgiu o nome “SharePoint Foundation 2010”. Mas o que seria esse tal “Foundation”? Apenas um novo nome para o Windows SharePoint Services?

Para começar a entender, veja na figura abaixo que temos uma estrutura muito similar ao que tínhamos na versão anterior: uma plataforma que fornece diversos serviços e que possibilita a parte “Server” com foco em Intranet ou Internet / Extranet com suas respectivas funcionalidades e modo de licenciamento.

image

Até aqui, muito parecido com o que tínhamos anteriormente, com uma analogia direta entre Windows SharePoint Services e o SharePoint Foundation 2010.

Agora, se olharmos as funcionalidades existentes ao Foundation (figura abaixo), veremos que este se tornou verdadeiramente um framework consistente para o SharePoint, possibilitando assim ser encarado como uma plataforma de desenvolvimento.

image

O que possibilita essa visão de plataforma é, principalmente, as funcionalidades de composição existentes nessa versão do SharePoint (atenção especial para o Business Connectivity Services – BCS). Outro ponto muito bacana é a possibilidade de armazenamento de dados dentro ou fora do banco de dados do SharePoint (Remote Blob Storage), além da melhor programação através de LINQ, Client APIs (vou fazer um post só sobre isso) e Eventos (API Enhancements) e claro da possibilidade do uso de REST.

Então, se olharmos com um pouco mais de detalhe e cuidado nas funcionalidades do SharePoint Foundation 2010, veremos que este pode ser encarado como uma plataforma de desenvolvimento (principalmente de colaboração) que fornece um padrão visão, serviço de acesso a dados e armazenamento, além de todo os serviços de segurança, backup, deployment e provisionamento.

Espero detalhar várias dessas funcionalidades nos próximos posts, mas enquanto isso recomendo a leitura do White Paper do David Chappell.: The SharePoint 2010 Developer Platform: An Introduction for ASP.NET Solution Architects

[]s

Alex Schulz

Gerenciamento de Documentos: Content Organizer

Dando continuidade as novidades de gerenciamento de documentos no SharePoint 2010, nesse post vou abordar o Content Organizer.

Essa funcionalidade tem como objetivo facilitar a organização dos documentos realizando um roteamento do documento para o local correto analisando um metadado associado ao documento, ou seja, de acordo com o valor de uma determinada coluna do content type o documento é direcionado para um determinado local de armazenamento.

Essa funcionalidade sempre é utilizada associada com algum content type. Com o content type definido, podemos criar as regras de roteamento e associa-la ao content type. Com as regras definidas, o documento segue o fluxo abaixo:

image

Quando um documento está no “Drop off zone”, o usuário deve informar os metadados que estão faltando, e após isso o documento é redirecionado para o local correto.

Configurações do Content Organizer

Algumas das configurações do Content Organizer são:

  • Se todo upload de documento, que tenha alguma regra associada a ele, seja redirecionado para o “Drop Off Zone”.
  • Enviar documento para outro site collection.
  • Automatizar a criação de novas pastas quando o número do documentos seja superior a algum número pré-determinado.
  • Comportamento caso duplicidade no nome dos documentos: criar uma nova versão do documentos ou adicionar um número no nome e mantar os dois documentos.

Após a configuração do Content Organizer, é hora de criar as regras de roteamento

Criando uma nova Regra de roteamento

Conforme o número de regras aumenta, se torna mais necessário que seja possível gerenciar a estrutura de regras de uma maneira simples. Temos duas opções para isso:

  • Desabilitar uma regra para prevenir que ela seja executada. Essa opção é útil quando você quer eliminar uma regra, mas ainda quer manter um histórico do que já foi executado (para mostrar que tal procedimento era executado, por exemplo).
  • Especificar a ordem em que cada regra será avaliada informando a prioridade de cada uma das regras. Se o documento estiver ok para duas regras diferentes, a regra com maior prioridade será executada.

image

Após isso é necessário fazer a associação com o content type com o qual a regra estará associada. Ao selecionar um content type, você estará determinando as propriedades que poderão ser utilizadas para o roteamento. Primeiro você seleciona o content type group e após isso seleciona o content type:

  • Todos os grupos disponíveis que possuam pelo menos um content type que derive do “Document” content type.
  • Quando estiver selecionando o content type, somente estarão disponíveis os tipos que derivam de “Document” (incluindo “Document Set”)

image

 

 

Até esse ponto temos a mesma funcionalidade do Record Center do MOSS, ou seja, roteamento baseado no content type. Com o Content Organizer, agora você pode definir uma condição que restringe mais a regra de roteamento utilizando o metadado para refinar o roteamento.

Você pode criar uma série (no máximo 6) de condições com base nas propriedades do documento, ou seja, a regra só será executada se os valores do metadado do documento forem os especificados nas condições. Um exemplo seria, se seu documento tem a propriedade “país”, somente os documentos com a propriedade país igual a “Brasil” seguiriam a regra.

image

Para finalizar a criação uma regra, é necessário definir o destino  do documento que obedecer a regra que está sendo criada. Uma informação importante é que o o destino do documento deve estar associado ao content type do documento.

image

O Content Organizer é uma evolução do roteamento existente do Record Center do MOSS 2007. Com ele, além de fazer um roteamento baseado no Content Type, você pode utilizar as propriedades do documento para refinar a regra de roteamento, aumentando muito as possibilidades de manter seu ambiente de documentos mais organizado e facilitando a vida do usuário na hora de fazer upload de um documento (ele não precisa se preocupar com o local onde ele deve subir o documento).

[]s

Alex Schulz

Palestras de Office & SharePoint 2010 no PDC

Caros,

para os que vão ao Microsoft Professional Developers Conference (PDC) 09, ou para os que estão pensando em ir, o Steve Fox (Microsoft Corp) publicou no blog dele as palestras de desenvolvimento Office & SharePoint 2010 que serão apresentadas durante o evento.

Vale conferir.

[]s

Alex Schulz

SharePoint 2010 - Gerenciamento de Documentos

No Microsoft Office SharePoint Server 2007 (MOSS), temos as seguintes funcionalidades relacionadas a gerenciamento de documentos que tiveram poucas (ou nenhuma) alteração na nova versão (2010):

  • Recycle Bin
  • Check in e check out
  • Versionamento (Major e Minor)
  • Permissões no nível do item
  • Content Types
  • Policy
  • Workflow

No SharePoint 2010 tivemos melhorias no Document Center Site Template e a funcionalidade do Record Center do MOSS 2007 (fornece roteamento de documentos baseado no Content Type do documento), tem uma nova versão no SharePoint 2010 que oferece roteamento baseado em meta dados: o Content Organizer.

Além do Content Organizer, temos de novidades:

  • “Document Sets”: gerenciamento de multiplos documentos
  • “Location-based metadata defaults”: modo de definir os valores padrões dos meta dados tendo como base a localização (folder, por exemplo) do documento.
  • “Metadata navigation and filtering”: ferramenta para facilitar a navegação em listas de documentos muito grandes.
  • “Document ID”: identificador único do documento (ou Document Set) que independe da localização do documento, ou seja, fornece uma url de acesso ao documento que não é formada pela localização do documento.

Nos próximos posts, vou explorar um pouco de cada uma dessas melhorias e novidades do SharePoint 2010.

[]s

Alex Schulz

SharePoint Brasil Summit 2009

Caros,

fica aqui uma dica de um evento onde será apresentado muitas coisas do SharePoint 2010. O evendo acontecerá no dia 7 de novembro. Mais informações em: http://www.sharepointbrasil.net/Summit/default.html

[]s

Alex Schulz

SharePoint 2010 (Beta) Developer Center disponível

Pra quem já pretende começar a conhecer e entender melhor o SharePoint 2010, está disponível o Developer Center para o Beta do SharePoint 2010, além de termos um Upgrade Resource Center para ajuda-los a planejar o upgrade para a nova versão (o beta publico do SharePoint deve estar disponível em Novembro de 2009).

Além disso está disponível um Community Resource Center que será um fórum focado em desenvolvimento para o Beta do SharePoint 2010.

Agora, se você já quer começar a desenvolver para o SharePoint 2010, foi lançado o Getting Started Developing on SharePoint 2010 que contém 10 módulos:

Com esses recursos, já podemos começar a conhecer e desenvolver utilizando o SharePoint 2010.

[]s

Alex Schulz

Nova Versão do SharePoint Guidance - Patterns & Practices

Foi lançada mais uma versão do SharePoint Guidance - Patterns & Practices.

Essa nova versão tem como objetivo:

  • Aplicações de “Larga Escala”
  • Aplicações com muito Conteúdo
  • Integração com sistemas legados

O conteúdo está muito bom vale conferir.

[]s

Alex Schulz

Encontro de parceiros Setembro 2009

Durante o segundo dia do encontro de parceiros da Microsoft tivemos uma Track para parceiros de solução.

Durante essa track, fiz uma apresentação sobre Windows 7 para desenvolvedores e, conforme prometido, o ppt apresentado está disponível para download aqui ou visualizado abaixo:

As referências apresentadas foram:

Para as outras apresentações sugiro acessar os blogs do Rafael Godinho e do Luciano Condé.

[]s

Alex Schulz

SharePoint 2010: um pouco mais de informações

Para quem quiser ter um pouco mais de informações sobre o SharePoint 2010, a microsoft publicou algumas informações e videos (visão geral, IT Pros e Desenvolvedores). Vale conferir.

links:

[]s

Alex Schulz

Windows 7 Taskbar: ícone e barra de progresso

Para terminar a série de posts sobre a nova barra de tarefas do Windows 7, vou mostrar como trabalhar com ícones e barra de progresso no taskbar. Para isso novamente estarei utilizando os helpers que referenciei no primeiro post sobre a barra de tarefas do Windows 7.

Trocando o Ícone

Algumas vezes pode ser interessante alterar o ícone que aparece na barra de tarefas. Por exemplo, o Messenger utiliza desse recurso: o ícone na barra de tarefas reflete exatamente o status em que me encontro:

icone_1

Executar essa alteração é muito simples. Utilizando o helper Windows7Taskbar precisamos chamar o método SetTaskbarOverlayIcon que recebe o novo ícone e sua descrição. Dessa forma o que precisaríamos fazer é, ao mudar o status de nossa aplicação, chamar esse método (como feito no código abaixo):

Icon icon = GetIconByStatus((string)cmbStatus.SelectedItem);
Windows7Taskbar.SetTaskbarOverlayIcon(this.Handle, icon, (string)cmbStatus.SelectedItem);

Nesse código estou recuperando o ícone baseado no que foi selecionado num ComboBox e após isso estou chamando o SetTaskbarOverlayIcon para trocar o ícone. O resultado na aplicação que estou utilizando como teste seria o seguinte:

icone_2 

Barra de progresso

Outra possibilidade da nova barra de tarefas é utilizar o ícone que fica na barra de tarefa como uma barra de progresso.

Para demonstrar isso vou utilizar a mesma aplicação acima e realizar uma tarefa de transferência de arquivo (não vou implementar a transferência, mas vou simular um processo que toma algum tempo para terminar). Para isso vou utilizar o método Windows7Taskbar.SetProgressValue. Esse método recebe o percentual no qual o processo se encontra (de 0 a 100).

Windows7Taskbar.SetProgressValue(Handle, (ulong)_percentFileCompleted,(ulong)100);

Barra de progresso na barra de tarefas 

Com isso, a barra verde vai crescendo de acordo com o valor que foi passado. Além disso podemos passar um status (por exemplo, um status de erro). Para isso utilizamos o Windows7Taskbar.SetProgressState.

Windows7Taskbar.SetProgressState(Handle, Windows7Taskbar.ThumbnailProgressState.Error);
progress_bar2 

Dessa forma podemos acompanhar o progresso da tarefa (atualizando o valor de _percentFileCompleted) ou informar visualmente que um erro ocorreu. Abaixo o código que utilizei para simular o progresso e o erro (que ocorre quando chega a 100%).

sendFileTimer.Interval = 1000;
sendFileTimer.Tick += delegate
{
    _percentFileCompleted += 10;
    if (_percentFileCompleted == 100)
    {
        sendFileTimer.Stop();
        MessageBox.Show("File operation failed!");
        Windows7Taskbar.SetProgressState(Handle, 
            Windows7Taskbar.ThumbnailProgressState.Error);
        _percentFileCompleted = 0;
    }
    else
    {
        Windows7Taskbar.SetProgressValue(Handle, 
            (ulong)_percentFileCompleted, (ulong)100);
    }
};
sendFileTimer.Start();

Com essas informações, eu fecho a série de 3 posts referentes a nova barra de tarefas do Windows, onde a idéia foi demonstrar algumas possibilidades de utilização dessa nova Taskbar em sua aplicação.

Os outros dois posts foram:

[]s

Alex Schulz

Windows 7 Taskbar: Thumbnails

Dando continuidade nas possibilidades de utilização / customização da barra de tarefas do Windows 7, agora vou mostrar como customizar o Thumbnail da aplicação que é mostrado quando paramos o mouse em cima da aplicação que está rodando no taskbar.

Thumbnail 

Por padrão o Thumbnail traz um preview do aplicação para identificarmos se é essa janela que queremos ver sem precisar ir até a aplicação (muito útil quando temos muitas documentos, apresentações e/ou browsers abertos). Porém quando a aplicação possui muitas informações na tela e fica muito complicada a visualização no modo padrão. É nessas situações em que o que vou mostrar é muito útil.

Vale lembrar que estou usando o mesmo Helper que comentei no post anterior sobre Taskbar.

Selecionando uma região a ser mostrada no Thumbnail.

Como vocês podem notar na imagem abaixo, muitas vezes é impossível ler o que é mostrado no Thumbnail. Então uma das opções que temos é selecionar uma região da aplicação para aparecer. É isso o que vamos fazer agora.

Thumbnail_1

Como no nosso exemplo estou utilizando um aplicativo que visualiza um documento de texto, vou utilizar o índice do primeiro caracter (GetFirstCharIndexOfCurrentLine() do rich text box) para recuperar o ponto onde esse caracter é exibido (GetPositionFromCharIndex(index) do mesmo rich text box) e definir um retângulo que defini o que será exibido no Thumbnail utilizando o SetThumbnailClip do helper Windows7Taskbar.

int index = rtbText.GetFirstCharIndexOfCurrentLine();
Point point = rtbText.GetPositionFromCharIndex(index);

Windows7Taskbar.SetThumbnailClip(Handle,
      new Rectangle(point, new Size(200, 119)));

Com isso podemos tornar o thumbnail mais visível realizando uma espécie de zoom, o que facilita a identificação do conteúdo da aplicação que está rodando.

Thumbnail_2

Alterando o conteúdo do Thumbnail

Existem situações onde queremos exibir no thumbnail informações diferentes do que é apresentado na visualização “original da aplicação.

Para criar uma nova visualização vou utilizar o helper CustomWindowsManager e realizar os seguintes passos:

  • Instanciar um objeto do tipo CustomWindowsManager utilizando a função estática CreateWindowsManager.
  • Registrar o evento ThumbnailRequested
    • Neste evento vou capturar o primeiro caracter do texto (lembre que minha aplicação é um leitor de documento) que será utilizado para recuperar os primeiros 200 caracteres do texto.
  • Vamos criar uma imagem (bitmap) com o texto capturado anteriormente com fonte e cor alterados.
//criando instancia do CustomWindowsManager
_customWindowManager = CustomWindowsManager.CreateWindowsManager(Handle);
//Registrando o evento ThumbnailRequested
_customWindowManager.ThumbnailRequested += (o, e) =>
{
   recuperando o primeiro caracter
   int index = rtbText.GetFirstCharIndexOfCurrentLine();

   //Recuperando os 200 primeiros caracteres
   string textAround = rtbText.Text.Substring(index,
      Math.Min(rtbText.Text.Length - index, 200));

   //criando a imagem que será exibida
   Bitmap bitmap = new Bitmap(e.Width, e.Height);
   using (Graphics g = Graphics.FromImage(bitmap))
   {
      g.DrawString(textAround,
      new Font(new FontFamily("Calibri"), 9, FontStyle.Bold),
      new SolidBrush(Color.Red), 0, 0);
   }
   e.Bitmap = bitmap;
};

Agora só precisamos sobrescrever o WndProc e realizar a chamada de dois métodos: DispatchMessage e InvalidatePreviews (esse método garante que o thumbnail será gerado novamente, evitando assim utilizar o que está no cache).

        protected override void WndProc(ref Message m)
        {

            if (_customWindowManager != null)
            {
                _customWindowManager.DispatchMessage(ref m);
                _customWindowManager.InvalidatePreviews();
            }

            base.WndProc(ref m);
        }

Dessa forma o resultado é um thumbnail com um aspecto diferente do que temos originalmente na aplicação.

Thumbnail_3

 

 

Assim podemos diferenciar (mudando conteúdo e formato, ou simplesmente fazendo um zoom na visualização original) o que vamos exibir no thumbnail.

[]s

Alex Schulz

Windows 7 Taskbar: como utilizar em suas aplicações

Uma das novidades do Windows 7 é a nova Taskbar, e entre outras novidades do Taskbar está a “Jump List”.

A idéia da Jump List é facilitar o acesso aos arquivos utilizados recentemente, bem como ao acesso a tarefas comuns do aplicativo.

Para isso, e sem nenhuma customização nas aplicações, podemos adicionar no Jump List a lista de arquivos recentemente abertos pela aplicação. Como isso é nativo do Windows 7, só precisamos registrar a associação do tipo de arquivo com a aplicação (pelo próprio SO, utilizando o “abrir com”, ou também podemos fazer a associação utilizando uma linha de código). Dessa forma, mesmo aplicações anteriores as Windows 7 podem tirar proveito da Jump List, mostrando os arquivos recentemente abertos que possuem a extensão associada com a aplicação.

Além dos arquivos recentes, como vocês podem ver na imagem abaixo, ao clicar com o botão direito do mouse sobre um aplicativo que está no Taskbar (no caso o Messenger), temos uma lista de tarefas que podemos executar. Então com pouco código (que vou mostrar aqui), podemos facilitar o acesso e uso de nossas aplicações.

Taskbar_JumpList

 

Dessa forma, vou mostrar como adicionar arquivo de forma explicita aos documentos recentes (mesmo sem esse arquivo ter sido utilizado), pra depois demonstrar como criar tarefas customizadas e categorias na Jump List.

Para facilitar o desenvolvimento, vou utilizar o Windows 7 taskbar: Developer Resources que contém implementado alguns Helpers, além de exemplos de utilização do Taskbar.

Associando um tipo de arquivo ao aplicativo

Para associar um tido de arquivo ao meu aplicativo, eu utilizei o Wrapper que está no projeto “Windows7.DesktopIntegration”, que contem um helper (RegistrationHelper) com essa finalidade.

Com o o RegistrationHelper, o que precisamos fazer é chamar o método “RegisterFileAssociations” passando o Identificador da aplicação, true ou false para indicar se é uma ação para desassociar (false indica associar), o identificador do processo (onde podemos utilizar outro helper existente o Windows7 DesktopIntegration), a aplicação que deve abrir o arquivo, e as extensões.

RegistrationHelper.RegisterFileAssociations(
                APP_ID, false, Windows7Taskbar.GetCurrentProcessAppId(),
                Assembly.GetExecutingAssembly().Location + " /doc:%1",
                ".rtf");

Após isso, Sua aplicação fica disponível para abrir aquele determinado tipo de arquivo, mas até aqui, não tem nada demais.

Imagem_1

Adicionando arquivos abertos recentemente na lista

Após associar o tipo de arquivo, temos que informar quando algum arquivo associado a nossa aplicação foi aberto ou modificado.

Podemos fazer isso utilizando o a caixa de dialogo do Windows 7 através do “OpenFileDialog”:

OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() != DialogResult.OK)
    return;
rtbText.LoadFile(ofd.FileName);

Nesse exemplo estou abrindo um arquivo .rtf num RichTextBox.

Com isso, ao abrir o documento pela minha aplicação, o arquivo já aparece na lista de arquivos recentes.

Imagem_2

Outra forma de adicionar um arquivo na lista de recentes, é explicitamente adiciona-lo na Jump List.

Utilizando o helper existente no Windows7 IntegrationDesktop, só precisamos chamar o método AddToRecent do JumpListManager passando o nome do documento.

JumpListManager jlm = new JumpListManager(APP_ID);
jlm.UserRemovedItems += delegate { };
jlm.AddToRecent("Sample Document.rtf");

Inserindo tarefas e categorias

Até agora vimos o que é padrão no Jump List. Mas podemos ir um pouco além adicionando tarefas e categorias na lista. Para isso precisamos:

  • utilizar o JumpListManager
  • sobrescrever o “WndProc”
  • verificar se a mensagem é Windows7Taskbar.TaskbarButtonCreatedMessage (indicando que o Taskbar foi criado)
  • Registrar o evento JumpListManager.UserRemovedItems (esse evento é invocado se, quando a Jump List estiver sendo construida, for verificado que um item foi removido da Jump List pelo usuário)
  • chamar o método “AddUserTask” (adicionar uma tarefa) ou o “AddCustomDestination” para criar uma “categoria”
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == Windows7Taskbar.TaskbarButtonCreatedMessage)
            {
                _jumpListManager = new JumpListManager(APP_ID);
                _jumpListManager.UserRemovedItems += delegate { };
                _jumpListManager.AddUserTask(new ShellLink
                {
                    Path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), 
                            @"Windows NT\Accessories\wordpad.exe"), Title = "Launch Wordpad"
                });

                _jumpListManager.AddCustomDestination(new ShellItem
                {
                    Path = @"<real path here>\SampleDocument.rtf",
                    Category = "Interesting"
                });
            }

            _jumpListManager.Refresh();
        }

 

Quando estamos adicionando uma tarefa, no Path passamos o caminho do executável (no exemplo o caminho do wordpad.exe) e o título que vai aparecer na JumpList. Já quando estamos adicionando uma categoria, no Path informamos o caminho do arquivo e qual a categoria na qual ele vai ficar.

Imagem_3

Com isso, é possível criar uma forma bem fácil e prática de acessar sua aplicação utilizando a nova barra de tarefas do Windows 7, e o que é melhor, com pouco esforço.

[]s

Alex Schulz

More Posts Next page »
Page view tracker