Sou desenvolvedor com foco em aplicações web (se você acompanha meu blog já pôde perceber). Entretanto, como sou um curioso eterno por diferentes tecnologias de desenvolvimento, comecei a estudar um pouco sobre como desenvolver aplicações para executar com o Microsoft Office 2010 (os famosos Add-in’s) e, após testar algumas features, cheguei a um simples add-in que faz uso de uma classe de Speech Syntesis (síntese de fala) para efetuar a leitura do conteúdo de um e-mail no Outlook 2010. Me espantei com a simplicidade do processo.
O que faz este add-in
A idéia deste pequeno aplicativo é, ao abrir-se uma mensagem de e-mail no Outlook 2010, assincronamente as leituras do cabeçalho, assunto e corpo do e-mail são realizadas assincronamente. No momento em que se desejar interromper esta leitura, basta que se clique no botão que o aplicativo adicionará na barra de ferramentas do Outlook.
Criando o add-in AddInLeituraEmail
Com o Visual Studio aberto, vamos a criação de nosso projeto. Vá em File > New > Project. Na janela que se abre, à esquerda, selecione a guia “Office“. À direita, selecione a opção “Outlook 2010 Add-in“. Parametrize sua aplicação com nome do projeto, local onde o mesmo será salvo e o nome da solution. A Figura 1 apresenta este procedimento.
Figura 1: Criando o projeto de Add-in para o Outlook 2010
Projeto criado. Se tudo correu bem, sua Solution Explorer deverá estar semelhante aquela apresentada pela Figura 2.
Figura 2: Solution Explorer do projeto criado
Conforme citado no início deste artigo, como faremos uma “leitura” do e-mail, precisamos então da classe que nos ofereça os mecanismos necessários para realizar esta tarefa. Esta classe está presente na framework – “System.Speech“. A primeira medida que devemos tomar para alcançar nosso objetivo, é adicionar a referência para a classe citada. Para isso, vá a Solution Explorer, posicione o mouse sobre a pasta References, clique com o botão direito e selecione a opção “Add reference…“. Selecione a guia “.NET“, navegue até a classe “System.Speech” e clique em “OK“. A Figura 3 apresenta este procedimento.
Figura 3: Adicionando a referência para a classe “System.Speech“
Referência adicionada, vamos então para codificação de nossa classe. A Listagem 1 apresenta o estado inicial da classe quando o projeto é criado.
[csharp]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;
namespace AddInLeituraEmail
{
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
#region VSTO generated code
/// <summary>
/// Required method for Designer support – do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
}
}
[/csharp]
Listagem 1: Código inicial da classe
No código acima é fácil constatar que, por padrão, um add-in possui dois estados: Startup e Shutdown. Portanto, todas as parametrizações e implementação de comportamentos devem estar dentro destes métodos (que representam os estados, salve a Orientação a Objetos :-)). Vamos então a codificação desta classe. A Listagem 2 apresenta a codificação de nossa classe.
[csharp]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;
namespace AddInLeituraEmail
{
public partial class ThisAddIn
{
private Office.CommandBar BarraFerramentas;
private Office.CommandBarButton botaoBarraFerramentas;
private System.Speech.Synthesis.SpeechSynthesizer sintese = new System.Speech.Synthesis.SpeechSynthesizer();
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
if (BarraFerramentas == null)
{
//Adicionando e configurando a barra de ferramentas
BarraFerramentas = Application.ActiveExplorer().CommandBars.Add(“Meus Addin’s”, Office.MsoBarPosition.msoBarTop, false, true);
//Configurando propriedades e ações do botão
botaoBarraFerramentas = (Office.CommandBarButton)BarraFerramentas.Controls.Add(Office.MsoControlType.msoControlButton, missing, missing, missing, true);
botaoBarraFerramentas.Caption = “Parar leitura”;
botaoBarraFerramentas.Click += new Office._CommandBarButtonEvents_ClickEventHandler(botaoBarraFerramentas_Click);
botaoBarraFerramentas.Visible = true;
}
Application.NewMailEx += new Outlook.ApplicationEvents_11_NewMailExEventHandler(Application_NewMailEx);
}
void botaoBarraFerramentas_Click(Office.CommandBarButton Ctrl, ref bool CancelDefault)
{
sintese.SpeakAsyncCancelAll();
}
void Application_NewMailEx(string EntryIDCollection)
{
try
{
if (((Outlook.MailItem)this.Application.Session.GetItemFromID(EntryIDCollection, missing)).UnRead)
{
var corpoMail = (((Outlook.MailItem)this.Application.Session.GetItemFromID(EntryIDCollection, missing)).Body);
var assuntoMail = (((Outlook.MailItem)this.Application.Session.GetItemFromID(EntryIDCollection, missing)).Subject);
var remetenteMail = (((Outlook.MailItem)this.Application.Session.GetItemFromID(EntryIDCollection, missing)).SenderName);
sintese.SpeakAsync(“E-mail enviado por ” + remetenteMail + “. O assunto é ” + assuntoMail + “. O corpo do e-mail é: ” + corpoMail);
}
}
catch
{
}
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
#region VSTO generated code
/// <summary>
/// Required method for Designer support – do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
}
}
[/csharp]
Listagem 2: Implementação do add-in
Não vou entrar em maiores detalhes sobre o código apresentado na Listagem 2, pois, ele é simples e de fácil entendimento. O que é importante explicitar é o que o código faz, ou seja, o que fazemos aqui é, em primeira instância, adicionar uma barra de ferramentas ao Outlook. Em seguida, adicionamos um botão a esta barra e o configuramos para que, quando clicado, pare a leitura do e-mail. Todas estas operações são implementadas dentro do estado startup, ou seja, quando o Outlook é carregado, todas as features do add-in também são inicializadas.
Muito bem, ao compilarmos e executarmos o projeto, temos a chamada ao Outlook e a tela de abertura do mesmo. É possível visualizar o add-in sendo incorporado ao mesmo, conforme apresenta a Figura 4.
Figura 4: Outlook incorporando o Add-in recém criado
Já com o Outlook aberto, podemos comprovar a presença do add-in ativo. Para isso, basta ir ao menu File > Options > Guia Add-in e observar a presença de nosso add-in “AddInLeituraEmail” dentre os suplementos ativos. A Figura 5 apresenta este processo.
Figura 5: Verificando a presença do add-in criado
Bom pessoal, é isso. Meu objetivo com este artigo é, quem sabe, estimulá-lo a criar mais aplicativos para agilizar a vida dos usuários em sua empresa ou pessoalmente.
Não esqueça de deixar seus comentários ao final da leitura. Ele é o nosso estímulo para continuar contribuindo! 🙂
Facebook
Twitter
Instagram
LinkedIn
RSS