logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!
Dez 26

Silverlight 4 e OutLook – COM Interop

Escrito por Robson Fernandes em Silverlight - COM, Silverlight - Core, SilverLight - Design, Silverlight - OOB @ 12 26th, 2009 | via http://www.riasoftware.com.br/blog/ | 1 comentário
Robson Fernandes
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

silverlight_design_riasoftware

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

sl_outlook_riasoftware

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

Nov 19

Captura de Imagens via WebCam – Silverlight Beta 4

Escrito por Robson Fernandes em Silverlight - Core, SilverLight - Design, Silverlight - Devices, SilverLight - News @ 11 19th, 2009 | via http://www.riasoftware.com.br/blog/ | 1 comentário
Robson Fernandes
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Introdução

Tudo jóia galera!!!

Com o lançamento do Silverlight Beta 4,  foram adicionados alguns recursos muito interessantes que não estavam presentes no Silverlight 3, o acesso a WebCam é um deles.
Vou apresentar uma aplicação que acessa a WebCam da máquina cliente, usando o Silverlight Beta 4,  algo similar ao Post que eu havia escrito em Adobe Flex.

Ferramentas necessárias

- Expression Blend for .NET 4 Preview
- Silverlight Beta 4 Runtime: Windows and Mac
- .NET Framework 4

Exemplo de Código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void btnAtivar_Click(object sender, System.Windows.RoutedEventArgs e)
{
if (this.captureSource != null)
{
this.captureSource.Stop();
//Seto o dispositivo para o VideoBrush
this.videoBrush.SetSource(this.captureSource);
//Renderizo o Vídeo no Retangulo =>; videoCaptura
videoCaptura.Fill = this.videoBrush;
 
//Verifico permissão de acesso aos dispositivos
if (CaptureDeviceConfiguration.AllowedDeviceAccess || CaptureDeviceConfiguration.RequestDeviceAccess())
this.captureSource.Start();
 
}
}

A mesma classe utilizada para invocar dispositivos de Vídeo, também é utilizada para acessar o Microfone da máquina cliente.
Quando nós ativarmos o dispositivo, ele apresentará um caixa de diálogo solicitando permissão de acesso, algo similar ao Adobe Flex.

riasoftware_robson_fernandes_permissao

Aplicativo WebCam

Baixem os códigos fontes aqui.

Meus Comentários

A Microsoft está melhorando muito os conceitos de usabilidade e design em relação ao Silverlight, vi muitos conceitos sendo aplicados aos controles do Silverlight nessa versão Beta 4. Algo que me chamou atenção foi o controle NotificationWindow , que eu falarei em um futuro Post.
Ele me fez lembrar um vídeo que o Beck Novaes da DClick disponibilizou na internet, sobre “O Segredo das RIAS de sucesso”. Lá foi apresentado uso de Modless FeedBack, ao invés dos famosos Alerts.
Excelente Vídeo! Para aqueles que querem aprimorar os conceitos de RIA, assistam!

Abs.

Robson Fernandes

Nov 16

Componentes desacoplados – Silverlight

Escrito por Robson Fernandes em Silverlight - Core, SilverLight - Design, Silverlight - Dicas, Silverlight - MVC @ 11 16th, 2009 | via http://www.riasoftware.com.br/blog/ | Sem comentários
Robson Fernandes
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Boa  noite pessoal!

Hoje vou falar um pouco sobre Events e Delegates no Silverlight.Essa metodologia nos auxilia na a criação de componentes desacoplados, ou seja, isto significa que nossos componentes serão independentes da aplicação.


-  Introdução

A principio vamos analisar o comportamento dos objetos existentes no Silverlight, vejamos:

Neste trecho de código, que é bastante comum para os desenvolvedores Silverlight, observem que o objeto btnSalvar que faz papel de assintante do evento, registra o evento Click com um Delegate chamado  RoutedEventHandler que delegará a ação a ser executada através do método btnSalvar_Click.

Logo, quando a ação Click ocorrer, o objeto será notificado, e então, executará as instruções contidas no método que foi registrado para o evento.

1
2
3
4
5
6
btnSalvar.Click +=new RoutedEventHandler(btnSalvar_Click);
 
private void btnSalvar_Click(object sender, RoutedEventArgs e)
{
//Faz alguma coisa
}

-  Modelo a ser desenvolvido

Mas como vamos assinar e consumir eventos customizados em nossos componentes ? É o que veremos nesse POST agora!

Vamos criar um UserControl que recebe um texto no elemento TextBox, e o dispara através de um evento customizado, para a MainPage de nossa aplicação.

riasoftware_componente_custom_text

Observerm que será um componente bem simples, ele terá um TextBox, e um Button que irá disparar o evento.

Vamos criar um EventArgs customizado do nosso componente, que é utilizado como parametro na assinatura do Delegate de nosso evento, ele é composto por:

- Um remetente do evento (sender)
- Uma instancia do EventArgs, ou uma classe que derive do EventArgs

Ficou com dúvida ? Basta olharmos para esta assinatura.

1
private void btnSalvar_Click(object sender, RoutedEventArgs e)

Observem que ele recebe dois parametros, nós iremos fazer o EventArgs customizado! ok!

Bom pessoal, nosso EventArgs customizado terá uma propriedade Text que receberá uma string vinda de um TextBox .

1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
 
namespace ComponentesDesacoplados
{
public class ReturnTextEventArgs : EventArgs
{
public string Text
{
get;
internal set;
}
}
}

Código interno do componente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
 
namespace ComponentesDesacoplados
{
public partial class ComponentText : UserControl
{
//Declaramos nosso Delegate.
public delegate void ReturnTextHandler(object sender, ReturnTextEventArgs e);
//Evento do nosso Componente, que tem como tipo nosso
//Delegate declarado logo acima.
public event ReturnTextHandler ReturnText;
 
public ComponentText()
{
InitializeComponent();
}
//Precisamos criar um método que é responsável por disparar o
//evento neste caso o OnReturnText
public void OnReturnText(ReturnTextEventArgs e)
{
if (ReturnText != null)
{
ReturnText(this, e);
}
}
 
//Ação do botão Click para disparar o Texto
private void btnDisparaTexto_Click(object sender, System.Windows.RoutedEventArgs e)
{
//Instanciamos nosso EventArgs, que possui o parametro Text
// que iremos utilizar
ReturnTextEventArgs returnTextEvent = new ReturnTextEventArgs();
//Carregamos o parametro com o TextBox do componente.
returnTextEvent.Text = txtTexto.Text;
//E então disparamos o evento com o método resposável pelo
//disparo OnReturnText
OnReturnText(returnTextEvent);
}
 
}
}

Utilizando o componente na MainPage de nosso Projeto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
 
namespace ComponentesDesacoplados
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
//Registramos nosso Evento ReturnText, com o Delegate ReturnTextHandler
//que irá delegar ao método componentText_ReturnText a ação a ser executada.
componentText.ReturnText += new ComponentText.ReturnTextHandler(componentText_ReturnText);
 
}
 
//Observe aqui, que nosso método recebe o ReturnTextEventArgs, customizado
//e o mesmo possui a propriedade Text que foi carregda pelo TextBox de nosso
//componente
void componentText_ReturnText(object sender,ReturnTextEventArgs e)
{
//Apresenta na tela o texto carregado.
MessageBox.Show(e.Text);
}
 
}
}

- Demonstração do Componente

- Download do Código Fonte

Aplicação – Componentes Desacoplados

Vlw!

Robson Fernandes

Nov 15

Bitmap to Base64 – Silverlight 3

Escrito por Robson Fernandes em Silverlight - Core @ 11 15th, 2009 | via http://www.riasoftware.com.br/blog/ | Sem comentários
Robson Fernandes
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

1 – Introduction


The term Base64 refers to a specific MIME content transfer encoding. It is also used as a generic term for any similar encoding scheme that encodes binary data by treating it numerically and translating it into a base 64 representation. The particular choice of base is due to the history of character set encoding: one can choose a set of 64 characters that is both part of the subset common to most encodings, and also printable. This combination leaves the data unlikely to be modified in transit through systems, such as email, which were traditionally not 8-bit clean.

2 – RiaSoftware.Util.BitmapToBase64  Class

I developed a library to simplify the process of converting bitmaps to Base64.
Follow the diagram of the main class:

riasoftware_robsonfernandes_base64_diagram

3 – Demo and Source Code

This application will read an image on the client machine, and convert to Base64.

Download the source code:

Library RiaSofwtare.Util.BitmapToBase64

Application BitmapToBase64 Converter

Thank you!

Robson Fernandes

| Entradas recentes »

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2791 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com