
Acessando o OutLook com Silverlight 4
Neste post, irei demonstrar uma caracterÃstica do Silverlight 4 muito interessante.
Agora temos a possibilidade de interagir com aplicativos COM através do Silverlight.
Esta funcionalidade exige um pedido de confiança (permissões elevadas), para que a aplicação possa ter acesso a máquina cliente.
Observe o código abaixo, este arquivo OutOfBrowserSettings.xml contém as configuracões para rodar aplicações Silverlight em modo OOB (Out- Of- Browser).
Veja na linha 10, que o atributo ElevatedPermissions, foi alterado para Required.
<?xml version="1.0" encoding="utf-8"?>
<OutOfBrowserSettings ShortName="SLOutLook" EnableGPUAcceleration="True">
<OutOfBrowserSettings.Blurb>
A short description of the application.
</OutOfBrowserSettings.Blurb>
<OutOfBrowserSettings.WindowSettings>
<WindowSettings Width="370" Height="280" Title="Acessando OutLook - Silverlight" />
</OutOfBrowserSettings.WindowSettings>
<OutOfBrowserSettings.SecuritySettings>
<SecuritySettings ElevatedPermissions="Required" />
</OutOfBrowserSettings.SecuritySettings>
</OutOfBrowserSettings>
Camada Visual
A camada visual da aplicação terá um objeto Image e um TextBlock, representando um botão.Ao clicar, será invocado um método para ativar o OutLook.
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="SLOutLook.MainPage" Width="370" Height="280"> <Grid x:Name="LayoutRoot" > <Grid.Background> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="Black" Offset="0"/> <GradientStop Color="Black" Offset="1"/> <GradientStop Color="#FE3F3F3F" Offset="0.164"/> <GradientStop Color="#FE2F2F2F" Offset="0.806"/> </LinearGradientBrush> </Grid.Background> <Image Source="Assets/outlook.png" Stretch="Fill" Margin="131,69,153,123" Cursor="Hand" ToolTipService.ToolTip="Click aqui para acessar o OutLook" MouseLeftButtonDown="Image_MouseLeftButtonDown"> <Image.Effect> <DropShadowEffect Color="#FF040404"/> </Image.Effect> </Image> <TextBlock Height="43" Margin="98,0,113,70" TextWrapping="Wrap" Text="Acessar OutLook" VerticalAlignment="Bottom" FontSize="18.667" Cursor="Hand" ToolTipService.ToolTip="Click aqui para acessar o OutLook" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown" Foreground="Black"> <TextBlock.Effect> <DropShadowEffect BlurRadius="0" Direction="335" ShadowDepth="2" Color="#FF646464"/> </TextBlock.Effect> </TextBlock> </Grid> </UserControl>
Método para invocar o OutLook
Observe o método invokeOutLook, ele contém um teste inicial, verificando se a aplicação realmente possui permissão na máquina local, e se a classe ComAutomationFactory existe no Windows.
Veja, que há uma palavra reservada chamada dynamic, ela está disponÃvel no C# 4.0, possibilitando o acesso a propriedades e métodos de forma dinâmica.
Isto é algo que os programadores AS3 já devem estar acostumados, e com certeza, será um recurso excelente pra quem trabalha com Silverlight.
private void invokeOutLook()
{
if (Application.Current.HasElevatedPermissions && ComAutomationFactory.IsAvailable)
{
dynamic outlook = ComAutomationFactory.CreateObject("Outlook.Application");
dynamic mailItem = outlook.CreateItem(0);
mailItem.To = "robsonfernandes@riasoftware.com.br";
mailItem.Subject = "RIA - Rich Internet Application";
mailItem.HTMLBody = "<b>Silverlight</b>"+
"</p>"+
"Viva o mundo das aplicações RIA.";
mailItem.Display();
}
}
Ao efetuar um clique com o botão direito do mouse sobre a aplicação, verá uma opção para instalá-la em modo OOB (Out- Of- Browser).

Ao executar a aplicação, caso tenha o OutLook instalado, ele irá abrir uma janela para envio de mensagens com as informações de destino, tÃtulo e corpo preenchidos.
Aplicação
Download aplicação SLOutLook
Abraço pessoal e um ótimo ano de 2010!
Robson Fernandes







