Você está na página 1de 32

10 ecode

magazine
www.ecode10.com

Aprenda a
programar com C#.NET, desenvolver web site ASP.NET, mobile, micro terminais, veja as dicas, notcias de informtica, promoes de vdeos, podcasts e muito mais sem gastar dinheiro.

EDIO #03 - 2011

< ndice > 0 1 2 3


Abrir o programa apenas uma vez Dicas Asp.Net: Alerta Javascript e abrir uma nova pgina Google Music Beta Montando estrutura de site MVC 2 com Visual Studio 2010 - Parte 2

4 5 6 7 8

Nova maneira de usar cache com .NET Dell lanado e a venda com Windows Phone 7 O segredo de utilizar ModalPopupExtender Pegando IP da mquina com CSharp

9 10 11 12

Plataforma Web ou Windows Forms? Adicionando tecla ESC no formulrio WebApp no mercado Programando para Micro Terminais com C# e Windows Embedded

A Revista
A ecode10 Magazine veio com o objetivo de ajudar voc leitor com artigos de informtica, programao, notcias, promoes e vdeos especiais. Se voc precisa aprender a programar, precisa de dicas importantes de segurana na programao e no tem muito tempo para ficar lendo livros de 500 ou 1000 pginas; ento leia a nossa revista.

Editorial
Seja patrocinador
Seja um patrocinador da nossa revista e promova o seu negcio de forma simples, especial e com grande oportunidade de retorno. Para ser um patrocinador, no sempre precisa investir dinheiro, voc pode investir o seu tempo mandando artigos, mandando vdeos feitos, divulgando o nosso trabalho no seu Twitter, mandando e-mail e muito mais. Se voc quiser investir dinheiro, e colocar o seu negcio dentro da revista enviada para mais de 8 mil pessoas gratuitamente; basta colocar o valor de R$ 50,00 (cinquenta reais) para tal. O valor serve apenas para nos ajudar a manter o site no ar e com segurana. No temos at o momento o objetivo de lucro como outras existentes no mercado.

A revista possui mais artigos tcnicos do que te tericos, isso porque somos feitos de programadores, isto , a revista feita com ajuda dos programadores.

Vantagens de ser patrocinador


O nosso site possui mais de 7 mil pessoas cadastradas e ativas, temos mais de 890 acessos diariamente em nossos servidores, temos vdeos, podcasts, artigos, revista, informativo dirio, e-mail marketing, banners e muito mais. Em todos estes meios, temos a possibilidade de anunciar o seu negcio e manter a gerncia de clique.

A revista grtis para download, basta ter apenas cadastro nos sites www.ecode10.com ou no www.aspneti.com. Se voc quer nos ajudar publicando artigo na revista, ento escreva para ns ou entre no site, v ao menu fale conosco e nos mande uma informao. Estamos tambm no Twitter divulgando informaes sorteando promoes de vdeos, ebooks e artigos.

EDITOR: MAURICIO JUNIOR DESIGNER: JULIANO AGUIAR

Abrir o programa apenas uma vez


Ol pessoal, hoje gostaria de dar mais uma dica para quem programa na plataforma Windows Form. O que vou falar aqui simples e ?l no dia a dia. O precisa ser feita a vericao de processos dentro do sistema operacional. Esse processo pode ser pego de vrias maneiras, vou mostrar duas mais ecientes. O obje?vo do ar?go vericar se o programa j est rodando ou em funcionamento dentro do computador. Se es?ver funcionando, o mesmo no pode abrir outra tela. Usado: Visual Studio 2010, C#.NET, Windows Form. Primeira maneira sem a extenso .exe pode ser buscada sem qualquer problema. O segredo para funcionar sem qualquer

problema o Length >=2, isso porque no momento, j existe um programa aberto e ao clicar novamente, dois processos sero abertos (quando falo em processos, digo o prprio programa .exe). Note que, uma mensagem mostrada na tela e

o passo seguinte nalizar o aplica?vo com o Applica=on.Exit(); e return. Segunda maneira A segunda maneira de pegar processos da

if (System.Diagnostics.Process.GetProcessesByN ame("nome-projeto").Length >= 2) { MessageBox.Show("Ateno: O Aplicativo j est aberto no seu computador.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1); Application.Exit(); return; }

mquina e vericar se existe algum processo funcionando, u?lizando for. Para isso, gerei um array e percorri o mesmo. (Code 1.2)

System.Diagnostics.Process[] processos; processos = System.Diagnostics.Process.GetProcesses(); // Faz um FOR (busca) em todos os processos for (int i = 0; i < processos.Length; i++) { // Verifica se um processo em especifico est sendo executado if (processos[i].ProcessName == "nome- projeto") { MessageBox.Show("Nome: " + processos[i].ProcessName.ToString()); } }

Code 1.1 A primeira vericao, como mostrado no Code

1.1, pego diretamente pelo nome usando o mtodo do framework chamado GetProcessesByName. A vericao feita logo no incio do aplica?vo, geralmente no Load do primeiro formulrio. Todo o processo existente na mquina, o

programa pode pegar passando apenas o nome do programa ou projeto. Geralmente o nome do projeto

Code 1.2

Abrir o programa apenas uma vez


Note que foi usado o GetProcesses que retorna um array de processos executado na mquina. Com isso, o for ca fcil de fazer quando se tem a quan?dade. (Code 1.3)

for (int i = 0; i < processos.Length; i++)

Code 1.3 Dai em diante para pegar o nome do processo

uma mo na roda. Voc pode pegar o id, pode matar o processo, pode vericar se est sendo executado e muito mais. O framework da Microso^ possibilita essa programao simples e tranqila. Bom, espero que tenha gostado e qualquer

Siga nos @ECODE10

dvida pode entrar em contato pelo site.

Dica ASP.NET para alerta javascript e abrir nova pgina


Hoje vou falar um pouco das coisas simples, Imagem 1 Ao clicar no boto da pgina aspx, o campo no mas que se tornam complicadas quando colocamos o objeto Ajax do .NET na aplicao. Um exemplo disso so as mensagens em javascript ou no momento de abrir um popup. Antes de colocar o objeto <ScriptManager> ou o <ToolkitScriptManager>, todas as mensagens javascript de alerta ou script para abrir popup funcionam sem qualquer problema. D e p o i s d e c o l o c a r a s t a g s e u s a r o
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "sua-mensagem", "alert('sua mensagem qualquer')", true);

foi preenchido e de acordo com a regra do sistema, precisa ser preenchido pelo usurio. Foi usado o ScriptManager.RegisterClientScriptBlock passando alguns parmetros par?culares para exibio da mensagem mantendo ainda os dados da tela aspx. (Code 1)

<UpdatePanel> e o <ContentTemplate>, aquelas mensagens que funcionam deixam de funcionar apresentando apenas um erro na tela. Todo esse processo mostrado quando a mensagem javascript est dentro do cdigo VB.NET ou C#.NET. O obje?vo mostrar uma forma simples e fcil

Code 1 Analisando o Code 1 a parte onde ca sua-

de como deixar funcionando os comandos javascripts dentro do C#.NET. Usado: Linguagem C#.NET, ferramenta Visual Studio 2010, plataforma ASP.NET (web). A mensagem deve vir de dentro do cdigo de

mensagem, apenas um controle como se fosse um id de objeto de tela, ou seja, no deve ser repe?do na mesma pgina. No necessrio passar o <script>javascript:</script>, basta colocar o alert ou conrm para quem usa. Para exibir uma mensagem na tela pegando

programao, como na imagem 1, veja o cdigo 1 de como tem que car.

alguma varivel do prprio C#.NET, basta u?lizar as aspas e a concatenao. Code 2.

String situacao = meu nome; ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "mensagem-1", "alert('" + situacao + "');", true);

Code 2

Dica ASP.NET para alerta javascript e abrir nova pgina


Esse cdigo resolveu o meu problema para exibio de alerta javascript na pgina. Ele pode resolver o seu tambm. Finalizando, para abrir outra pgina executando dentro do cdigo C#.NET, veja o Code 3.

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "abrir-1", "window.open('pagina.aspx')", true);

Code 3 O Code 3 executa o window.open chamando a

pgina. Em resumo, todo cdigo javascript que quiser colocar dentro do C#.NET pode ser colocado de acordo com os exemplos acima. Espero que tenha gostado, qualquer dvida pode entrar em contato pelo site.

ENVIO DE SMS INTEGRADO NO SEU APLICATIVO www.mytalk.com.br

Livro: ASP.NET Utilizando C#

Google Music Beta


O Google lana a verso beta da Music Store como todos j sabem, o funciona atravs de convites. Cada usurio possui dois convites para convidar amigos com uma chave especca. O servio baseado nas nuvens como o da Amazon e Apple (iCloud). No caso de no sa?sfao dos dois primeiros, voc pode aderir ao Google Music Beta (aps receber o convite). Ser que vai pegar? No Brasil pelo menos, os planos de dados 3G deixam a desejar e o preo um dos mais altos do mundo. O melhor de tudo a concorrncia. Quem ganha o usurio.

Montando estrutura de um site MVC 2 com Visual Studio .NET 2010 - Parte 2
Primeiro ar2go mostrado na primeira edio da revista.
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Contato </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2>Contato</h2> <% using (Html.BeginForm()) { %> <%: Html.ValidationSummary(true, "A mensagem falhou a ser enviada! Tente novamente!") %> <fieldset> <legend>Entre em contato</legend> <div> <%: Html.Label("Nome: ") %> </div> <div> <%: Html.TextBox("txtNome", null, new { @class="campo_form" }) %> </div> <div><%: Html.Label("Email: ") %></ div> <div> <%: Html.TextBox("txtEmail", null) %> </div> <div><%: Html.Label("Descrio: ") %></div> <div> <%: Html.TextArea("txtDescricao") %> </div> <input type="submit" value="Enviar" /> </fieldset> <% } %> </asp:Content>

Para con?nuar montando uma estrutura com o

MVC 2 u?lizando o Visual Studio .NET 2010,tenho o obje?vo de mostrar como criar um formulrio para envio de e-mail com a nova ferramenta e arquitetura. um pouco diferente da forma an?ga de fazer, porm ca bem mais organizado para quem gosta de organizao e no tem nenhuma. Para quem no leu o ar?go anterior, segue o link para melhor entendimento. Este ar?go realmente con?nuao do anterior. Usado: Ferramenta: Visual Studio .NET 2010 Linguagem: C#.NET Plataforma: Web Arquitetura: MVC No ar?go anterior, foi colocado uma descrio

simples na View Contato.aspx criada. Agora eu vou mostrar uma forma diferente de colocar os campos TextBox com validao de dados. Code 2.1

Code 2.1 Note que, existe o Content1 e Content2 que a

pgina j cria quando o projeto foi iniciado.

Montando estrutura de um site MVC 2 com Visual Studio .NET 2010 - Parte 2
Estou usando o HTML.BeginForm() para dar
<div> <%: Html.TextBox("txtNome", null, new { @class="campo_form" }) %> </div>

incio ao formulrio, aquela tag que usamos <form...> para colocar os campos. Veja que os campos so totalmente diferentes, isso porque est sendo usado scrip-led (um nome dado por usar as tags <% dentro da pgina HTML. Para label eu uso: (Code 2.2)

Code 2.5 Para submeter o formulrio, eu coloquei um

input submit igual ao HTML. Mas dentro da tag formulrio. Code 2.6
<div> <%: Html.Label("Nome: ") %> </div>

Code 2.2 Para textBox eu uso: (Code 2.3)

<input type="submit" value="Enviar" />

Code 2.6
<div> <%: Html.TextBox("txtEmail", null) %> </div>

O valida?onSummary eu u?lizo com apenas

uma linha de cdigo na parte da pgina. Code 2.7

Code 2.3 Para textArea eu uso (Code 2.4)

<%: Html.ValidationSummary(true, "A mensagem falhou a ser enviada! Tente novamente!") %>

Code 2.7 Bom, tudo isso foi apenas a parte da View Contato que precisei colocar. Agora necessrio fazer a Model e a Controller. Criando Model

<div> <%: Html.TextArea("txtDescricao") %> </div>

Code 2.4 Para u?lizar oformulrio com algum es?lo Agora eu preciso criar uma Model que tem a

especco, basta acrescentar alguns dados no script da tela. Veja o Code 2.5.

regra de validao e envio de e-mail com interface e service. O primeiro passo foi criar uma nova classe chamada Contato.cs. Cliquei com o boto direito em cima da pasta Models, escolhi a opo Add e depois

Montando estrutura de um site MVC 2 com Visual Studio .NET 2010 - Parte 2
New Item... (Figura 1)
public class Contato { [Required] [DataType(DataType.MultilineText)] public string txtDescricao { get; set; } [Required] [DataType(DataType.Text)] public string txtNome { get; set; } [Required] [ValidatePasswordLength] [DataType(DataType.EmailAddress)] public string txtEmail { get; set; } }

Referncia: Figura 1. Coloquei o nome de Contato.cs para a Model. Figura 2.

Code 2.8 A primeira linha [Required] mostra que o campo requerido, ou seja, obrigatrio para digitao. A segunda linha o DataType, o ?po do campo, note que o primeiro e o segundo so diferentes. Um mul?lineText e o outro Text. O prximo passo gerar outra classe que envia o email e depois gerar a interface. Isso tudo dentro do mesmo arquivo Contato.cs. Abaixo public class Contato, depois de fechar a chave gero outro public class. (Code 2.9)

Referncia: Figura 2 Como eu tenho campos para serem digitados, preciso gerar get e set, interface e um service. O mtodo ContatoService o local onde o e-mail ser enviado. Vamos para a pr?ca. Code 2.8

Montando estrutura de um site MVC 2 com Visual Studio .NET 2010 - Parte 2
public class ContatoService { public bool enviarEmail(string descricao, string nome, string email) { try { MailMessage mailMsg = new MailMessage(); mailMsg.To.Add("mauriciojunior@mauriciojunior.o rg"); MailAddress mailAd = new MailAddress(email); mailMsg.From = mailAd; mailMsg.Subject = "envio de email pelo site"; mailMsg.Body = descricao; SmtpClient smtpClient = new SmtpClient("mail.service.net", 25); System.Net.NetworkCredential cred = new System.Net.NetworkCredential("usuario", "senha"); smtpClient.Credentials = cred; smtpClient.Send(mailMsg); return true; } catch (Exception) { return (false); } } } public interface IContatoService { bool enviarEmail(string descricao, string nome, string email); }

Code 2.10 A interface d-se o incio por public interface IContatoService. O mesmo nome, mas com o I na frente. A interface chama o mtodo de enviar e-mail com os dados e assim termina o mtodo da Model Contato. S que ainda no terminei de fazer tudo que precisava para deixar funcionando a funcionalidade de enviar email. Como a View Contato est dentro da p a s t a H o m e , p r e c i s o a l t e r a r o a r q u i v o HomeController.cs que est dentro da pasta Controllers. Preciso criar um Ac?onResult com o mesmo nome da View passando como parmetro os dados criados da Model. Figura 3.

Code 2.9 Esse public classe ContatoService, ou seja, um servio de contato cujo recebe como parmetro trs dados e retorna um ?po bool. Antes de terminar esta classe existe a interface que precisa ser acrescentada dentro do mesmo arquivo. Code 2.10

Montando estrutura de um site MVC 2 com Visual Studio .NET 2010 - Parte 2
[HttpPost] public ActionResult Contato(Contato model) { if (ModelState.IsValid) { ContatoService cs = new ContatoService(); if (cs.enviarEmail(model.txtDescricao, model.txtNome, model.txtEmail)) { return View("ContatoSucesso"); } else ModelState.AddModelError("", "Erro ao enviar a mensagem"); } else ModelState.AddModelError("", "Erro ao enviar a mensagem"); return View(); }

Code 2.11 Referncia: Figura 3. A HomeController.cs est selecionada mostrada na gura 3. Dentro da classe acrescentei um mtodo Contato informando que um hyp Post. Code 2.11 Dessa forma, caram dois mtodos com o mesmo nome, porm um recebe parmetro de entrada e o outro no. Na primeira linha coloquei HypPost para informar que um mtodo para dar submit. Dentro do mtodo, veriquei se a ModelState est vlida, ou seja, se todos os parmetros foram preenchidos. Gerei uma instncia de ContatoService chamda cs que chama o mtodo enviarEmail passando os parmetros usando a model. Caso o resultado for ok, a View chama outra View com a mensagem que foi enviada com sucesso. Figura 4.

Montando estrutura de um site MVC 2 com Visual Studio .NET 2010 - Parte 2

Figura 4. Dentro da View Home existe outra view que criei chamada ContatoSucesso.aspx. Para chamar eu coloquei o cdigo (return View("ContatoSucesso");). Caso o retorno for false, eu mando uma mensagem para a tela. Bem simples e fcil de entender. Concordo que diferente do que fazamos anteriormente, porm ca mais organizado. Segue na pr?ca depois de clicar F5. Ao iniciar a pgina, cliquei no boto Enviar da Contato. (Figura 5) Referncia: Figura 6 A mensagem que escrevi na View de Sucesso apareceu na tela e o e-mail chegou. Bom, espero que tenha gostado e qualquer dvida pode entrar em contato pelo site. Obrigado. Referncia: Figura 5. Veja que os campos caram de outra cor e a

mensagem foi exibida. Agora eu vou preencher os dados e clicar no boto. Depois de preencher e enviar, veja o que mostrou na tela. Figura 6.

Nova maneira de usar cache com .NET


i n f o r m a e s s o a p r e s e n t a d a s r a p i d a m e n t e diferentemente da primeira entrada na pgina. As pginas podem ter cache por algum tempo, horas, dias ou anos; ou simplesmente no ter cache de uma determinada pgina. Na pgina desabilitada, a cada atualizao os dados sero atualizados do zero. Para as pginas que possuem cache, mesmo sendo atualizada clicando no boto refresh do browser, a pgina no carrega os dados do zero, consumindo assim menos memria do servidor. Aps passar o tempo, a pgina atualizada.

Desde a primeira verso do .NET, muitas coisas foram mudadas. Muitos desenvolvedores usam ainda a maneira an?ga sem saber que existe uma maneira nova de se fazer e mais ecaz. Hoje o que queria informar e mostrar a maneira de habilitar cache dentro do aplica?vo, tudo isso dentro do cdigo C#.NET ou VB.NET sem precisar colocar nada dentro do arquivo .ASPX. Usado: Ferramenta: Visual Studio .NET 2010 Linguagem: C#.NET Plataforma: ASP.NET (web) Todo o teste pode ser feito usando a plataforma da Microso^ no seu prprio computador. Existem tambm vrias maneiras de fazer uma mesma coisa, vou tentar mostrar algumas maneiras. Para quem no sabe, o cache uma maneira de evitar que a pgina seja atualizada no servidor buscando dados, ou a busca de informaes j con?das na memria do browser. Dessa maneira, as

Exemplo feito O exemplo que z, mostra que o tempo no atualizado mesmo clicando no boto refresh. Aps terminar o tempo, a pgina atualizada no clique. Tirando o Cache O m a i s c l s s i c o Response.CacheControl. (Code 1). u s a r o

Response.CacheControl = "Private"; Response.CacheControl = "no-cache";

Code 1 Outra maneira colocar cdigo dentro do arquivo de congurao: Web.cong. (Code 2).
<system.web> <!-- Remove o cache--> <httpRuntime sendCacheControlHeader="false"/> ...

Code 2

Nova maneira de usar cache com .NET


No Code 2, nenhum cache atribudo as pginas de todo o projeto. Com ele voc pode atribuir o cache em pginas especcas. Colocando o cache Agora vou mostrar duas maneiras de atribuir o cache para uma pgina especca. Peo para que coloque em um arquivo .aspx e no na .masterpage. (Code 3)
Response.Cache.SetCacheability(HttpCacheabi lity.Public); Response.Cache.SetMaxAge(new TimeSpan(1, 0, 0));

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication3_Cashe._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/ DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblTempo" runat="server"></asp:Label> </div> </form> </body> </html>

Code 3 No Code 3, foi atribudo o cache de 1 hora para a pgina. O segundo zero equivale a minutos e o terceiro a segundos. Outra maneira adicionar o tempo antes de habilitar o public. (Code 4).
Response.Cache.SetExpires(DateTime.Now.AddS econds(60)); Response.Cache.SetCacheability(HttpCacheabi lity.Public);

Code 5 Arquivo .ASPX


using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication3_Cashe { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Cache.SetExpires(DateTime.Now.AddS econds(60)); Response.Cache.SetCacheability(HttpCacheabi lity.Public); lblTempo.Text= "Tempo: " + DateTime.Now.ToString(); } } }

Code 4 Note que no Code 4, depois de 60 segundos o cache expira. Segue o Code 5 que mostra o exemplo real feito para mostrar que funciona. Code 5

Code 6 cdigo .CS

Dell lanado e a venda com Windows Phone 7

Hoje me surpreendi vendo um Venue Pro sendo anunciado no site por $99 (doletas) bloqueado e $299,00 (doletas) desbloqueado. O melhor de tudo, o aparelho vem com o Windows Phone 7 pronto para atualizao. O de $99 precisa cumprir contrato de 2 anos pela T-Mobile. O modelo desbloqueado alm de sem contrato, pode ser colocado chip de qualquer operadora do mundo. O aparelho possui duas verses, de 16 GB e 32 GB. Para aparelho de 16GB o valor ca mais barato $49,99. A verso desbloqueada de 32GB ca $500,00 (doletas). Ser que no Brasil pode chegar a esse preo? R$ 500,00 reais seria ?mo no acha?

O segredo de utilizar ModalPopupExtender


O ar?go tem obje?vo de mostrar como abrir uma tela modal usando o ModalPopupExtender depois que executou alguma pesquisa ou regra dentro do cdigo C#.NET. Funciona para as outras linguagens, mas o meu teste est sendo feito apenas com a linguagem C#.NET. Usado: Ferramenta: Visual Studio 2010, Linguagem: C#.NET, Plataforma: ASP.NET - AjaxControlToolkit O AjaxControlToolkit foi desenvolvida para Mostrando o cdigo O primeiro passo colocar a dll referenciada

em seu Toolbox. Criei uma nova aba e adicionei a dll que z download no site asp.net. (Imagem 1)

ajudar os desenvolvedores na criao de web sites e aplica?vos web. Voc pode fazer download da dll ou cdigo fonte neste site: Site: hyp://www.asp.net/ajax/ajaxcontroltoolkit/ samples/ No ano de 2009, publiquei um ar?go mostrando

como usar o ModalDialogExtender, falei de css e o cdigo para chamar a tela. O problema maior foi que, a tela mostrada sem que acesse diretamente o cdigo para qualquer processamento antes de aparecer. Ar?go: hyp://ecode10.com/ar?go/695/ modaldialogextender.aspx Neste ar?go, vou mostrar primeiro o

processamento dentro da linguagem e no nal, o resultado ser mostrado dentro da tela modal. Dessa maneira ca muito mais fcil usar essa grande funcionalidade que evita abrir popup que muitas vezes so bloqueados pelos browsers. Qualquer dvida sobre css, pode recorrer ao primeiro ar?go escrito em 2009, funciona muito bem. Imagem 1

O segredo de utilizar ModalPopupExtender


Para colocar todas as funcionalidades mostradas na Imagem 1, clique com o boto direito em cima do Toolbox e selecione a opo Add Tab. (Imagem 2) Imagem 3 Depois de abrir a tela com as dlls, voc clica em

Browser e indica a dll localizada em um lugar do seu computador. (Imagem 4)

Imagem 2 Coloque o nome que quiser na nova aba criada.

Imagem 4 Depois de todos estes passos, vamos comear a

Clique dentro da aba com o boto direito e escolha a opo chamada Choose Items. Uma tela nova aberta para a indicao da dll. (Imagem 3)

desenvolver uma pgina de exemplo. Arraste o componente da Toolbox chamado ModalPopupExtender para a pgina .aspx. Automa?camente o componente coloca no incio da pgina uma indicao. (Code 1)

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

Code 1

O segredo de utilizar ModalPopupExtender


Para que funcione perfeitamente a popupextender, necessrio criar um Panel normal dentro da pgina e com os componentes dentro. Componentes como GridView, Formulrio, Image e outros do .NET. (Code 2)
<asp:Panel id="pnlImagem" runat="server" CssClass="modalPopup" Style="display:none" Width="600px"> <div align="center"> <asp:Image ID="imgChequinhos" runat="server" Width="600px" /> <asp:Button ID="cmdFechar" runat="server" Text="Fechar" /> </div> </asp:Panel> <cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" BackgroundCssClass="modalBackground" CancelControlID="cmdFechar" DropShadow="true" PopupControlID="pnlImagem" PopupDragHandleControlID="panel3" TargetControlID="lblTeste"> </cc1:ModalPopupExtender>

Code 4 Note que foi adicionado uma propriedade

chamada BackgroundCSSClass=modalBackground indicando a parte do css, foi adicionado tambm um boto para fechar a tela CancelControlID=cmdFechar localizado dentro do painel (code 2), foi colocado tambm a propriedade PopupControlID=pnlImagem q u e o n o m e d o p a i n e l c r i a d o e a TargetControlID=lblTeste indicando a label. Aps o processamento de um clique qualquer,

Code 2 Note que coloquei o nome do Painel de

pnlImage, o CssClass coloquei o modalPopup criado no ar?go anterior e um Style=display:none para no aparecer na tela, s quando eu chamar. Depois de criar o Painel criei um label normal

o cdigo passa pelos mtodos e depois mostra o popup. No meu exemplo, no clique da grid ele deve mostrar uma imagem de acordo com o registro. (Imagem 5)

chamada lblTeste. (Code 3)


<asp:Label ID="lblTeste" runat="server"></ asp:Label>

Code 3 Ainda falta colocar o modal indicando o painel e Imagem 5 Usei o RowCommand para fazer essa

o label. (Code 4).

funcionalidade. No vou detalhar muito porque no o nosso foco falar dessa propriedade do grid.

O segredo de utilizar ModalPopupExtender


Mas depois de clicado e processado, eu chamo o modal .Show(); (Code 5).
protected void gridImagem_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "PesquisarImagem") { // processa os dados de acordo com a sua regra ModalPopupExtender1.Show(); } }

Code 5. O nome do id modal chama

ModaPopupExtender1, assim basta chamar o Show. O segredo est no componente label adicionado na pgina e indicado no TargetControlID. No ar?go an?go, o que era indicado nessa propriedade era um boto e no clique dele aparecia o popup sem que passasse pelo cdigo .cs. Agora o processamento feito primeiro para depois aparecer o popup. (Imagem 6)

Imagem 6 Fico por aqui e qualquer dvida pode entrar em

contato.

Pegando IP da Mquina com CSharp

string nome = Dns.GetHostName();

Code 1 O segundo passo foi pegar o endereo IP da

mquina passando a varivel nome. (Code 2)

IPAddress[] ip= Dns.GetHostAddresses(nome);

Um dia desses estava precisando pegar o

Code 2 A classe DNS oferece o mtodo

nmero de ip da mquina para gravar no banco de dados usando Windows Forms e C#.NET. O meu problema foi que nunca precisei fazer isso, a no ser usando a plataforma ASP.NET (web). Pra isso ?ve que estudar um pouco e achar uma

GetHostAddresses passando o nome do computador pego anteriormente. O mtodo retorna um array de IPAddress, ou seja, pode ser pego vrios ips no caso da no passada de parmetro (nome). O passo seguinte exibir o nmero em tela.

melhor maneira de pegar IP sem digitar muitas linhas de cdigos. O resultado foi interessante, achei vrias maneiras de fazer, porm escolhi a que melhor para o meu caso. Ento resolvi divulgar como ar?go do site as 3 linhas de cdigos. Usado: Windows Forms, Visual Studio 2010, C#.NET, System.Net. O que quei mais surpreso foi que o framework

Usei o simples e fcil MessageBox para isso. (Code 3)

MessageBox.Show(ip[1].ToString());

Code 3 Segue todo o cdigo, incrveis 3 linhas. (Code 4)

da Microso^ possui classes especcas para ajudar os desenvolvedores com isso. O primeiro passo foi fazer o importe da classe

string nome = Dns.GetHostName(); IPAddress[] ip= Dns.GetHostAddresses(nome); MessageBox.Show(ip[1].ToString());

Code 4 Fico por aqui e qualquer dvida pode entrar em contato.

System.Net e pegar o nome da mquina. (Code 1)

Plataforma Web ou Windows Forms?


Ol pessoal, gostaria de falar hoje um pouco sobre estas duas plataformas diferentes e diferenciadas no desenvolvimento. Mesmo usando a mesma linguagem no desenvolvimento a forma diferente, e para preencher alguns objetos a forma diferente entre as duas plataformas. Existem vrias vantagens em desenvolver na plataforma web, mas nem tudo pode ser feito como desenvolver na plataforma Windows Forms. Vou citar algumas opes especcas para que entenda e saiba qual a opo melhor para desenvolver dependendo do seu sistema. Gostaria de lembrar que, no existe uma compe?o entre as plataformas especcas. O que indico : antes de comear um aplica?vo, analise o que ser feito no todo e assim escolha a plataforma. Plataforma Web Na plataforma web, existem vantagens no Plataforma Windows Forms A vantagem de usar o Windows Forms que, desenvolvimento devido facilidade de uso sem instalar qualquer programa. A onda Web 2.0 ou Web 3.0 no toa. Como todos j sabem, basta acessar o endereo e pronto. O que ocorre no desenvolvimento web que, uma linguagem no suciente para criar um sistema. necessrio saber HTML, CSS, JavaScript e a linguagem C#.NET. Est certo que as outras linguagens como HTML, CSS e JavaScript; so linguagens interpretadas. Mesmo assim, necessrio entend-las. A plataforma web ca centralizada, isto , hospedado no servidor web que pode ser acessado pelo tudo programado para acessar diretamente do computador pessoal do usurio. Os dados especcos como, nmero da placa de rede, nmero do HD e outros podem ser acessados de forma simples e direta. Acessar um scanner, por exemplo, ca fcil usando Windows Forms; j na plataforma Web isso j no pode ser feito; a no ser que coloque um controle Windows dentro da plataforma Web. browser instalado no computador. Hoje com vrios browsers a disposio para download, dentre os mais famosos: Internet Explorer, Safari, Firefox, Chrome e Opera. Qualquer sistema operacional que tenha um browser instalado pode acessar o aplica?vo web, por exemplo: mesmo sendo feito em C#.NET (Windows 7), pode ser acessado pelo browser do MacOsX ou Linux. O que a plataforma web no faz? Bom, essa parte interessante porque a plataforma web no acessa localmente o computador do usurio para gravar dados, no consegue buscar a congurao da mquina do usurio totalmente sem instalar plugins especcos. Os plugins especcos nasceram para minimizar este problema de acesso a mquina local do usurio, isto , aquele que acessa o sistema pelo browser. S que, necessrio aprender tambm a linguagem desses plugins, dentre os mais famosos so: Silverlight e o Adobe Flash.

Plataforma Web ou Windows Forms?


Outra vantagem que vejo, na linguagem de programao. Basta aprender uma linguagem para programar, por exemplo: C#.NET, VB.NET ou F#.NET. Na escolha de uma dessas, possvel desenvolver o aplica?vo para Windows Forms. Diferente da Web, que precisa entender sobre outras linguagens. A centralizao pode ser feita usando Windows Espero que tenha gostado e qualquer dvida pode entrar em contato pelo site. Forms, a Microso^ disponibilizou junto a ferramenta Visual Studio .NET, o ClickOnce. Essa centralizao funciona perfeitamente, basta colocar os instaladores em um endereo de internet ou intranet para que o aplica?vo seja atualizado e instalado; sem a necessidade de ir mquina por mquina. Se houver alguma atualizao no aplica?vo, no momento que o usurio clicar para abrir o mesmo, ser feita uma atualizao autom?ca. A busca feita automa?camente pelo prprio so^ware. Qual o problema de programar em Windows Forms? O nico problema que vejo hoje a falta da mul?-plataforma. No caso da programao Windows Forms, o mesmo s pode ser acessado pelo Windows e suas verses. O Linux ou o MacOsX no consegue executar o aplica?vo; isso j corta um pouco a mul?- plataforma que existe no mundo todo. Resumo Em resumo geral, bom analisar os dados do seu aplica?vo antes de comear a fazer. Se o obje?vo for colocar em mul?-plataforma, ento faa na plataforma Web; seno faa Windows Forms. Existem vrios aplica?vos que precisam u?lizar dados ou scanners da mquina, ento use Windows Forms, mas para a visualizao u?lize Web; isto ; usando as duas plataformas para o funcionamento ideal do aplica?vo.

Adicionando tecla ESC no formulrio


Ol pessoal, gostaria de dar duas dicas boas referente ao Windows Forms. Sabe quando algum aperta a tela ESC e a tela que est aparecendo se fecha? Pois , isso que vou mostrar a voc passo a passo. bem simples e fcil, mas muitos desenvolvedores no sabem. Usado: Visual Studio .NET 2008, Linguagem: C#.NET, Plataforma: Windows Forms

Imagem: Tela 2 Na tela de propriedades, a propriedade chamada KeyPreview foi atribuda para TRUE. Ela vem com o valor padro FALSE. Mudei para TRUE. Tela 3. O prximo passo foi clicar em EVENTS, veja na

Imagem: Tela 1 Na tela aberta com os dados, quando o usurio

quiser sair da mesma basta clicar no boto SAIR ou clicar ESC. Para que o ESC funcione perfeitamente programa?camente, vou abrir as propriedades do formulrio e atribuir alguns dados. Imagem (Tela 2)

Adicionando tecla ESC no formulrio


Imagem: Tela 3. Junto ao evento KeyDown, eu cliquei duas vezes gerando o mtodo na classe .cs automa?camente. Dentro do mtodo, veriquei se a tecla clicada a ESC. Se for, eu fecho a tela com o Close(). Code 1.
private void ManterCliente_KeyDown(object sender, KeyEventArgs e) { if (e.KeyValue.Equals(27)) //ESC { this.Close(); } }

Code 1. muito simples e fcil, basta prestar ateno nas partes anteriores do cdigo. Falado acima. A tecla 27 corresponde a tecla ESC. Fico por aqui e espero ter gostado.

WebApp no Mercado
Ol pessoal, ontem foi marcado na internet vrias mensagens falando sobre o aplica?vo Oce da Microso^ funcionando na Web para a Amrica La?na. Antes de sair para Amrica La?na, j estava funcionando perfeitamente para os Estados Unidos. Para testar antes de chegar no Brasil, bastava mudar o seu pas nas conguraes do webmail (HotMail). Para usar o aplica?vo, basta ter uma conta no do mercado. Hoje pode ser funcione em todos os celulares com acesso a internet. Para isso, necessrio u?lizar um padro

feito um webapp que

especco e deixar de usar algumas apis redirecionadas ao browser do computador como o Flash. Alguns aparelhos como o iOS da Apple no funcionam com esse componente. No meu ponto de vista, vale a pena fazer

Hotmail, Live, Windows Live ou MSN. L no menu topo existe uma opo chamada Oce, com sub menus seus documentos, novo documento Word e outros. Quanto custa usar esse aplica?vo diretamente pelo browser? Nada, no se paga nada para usar o Word, Excel, PowerPoint ou OnNote. No s isso, alm de ter as mesmas caracters?cas do Word 2010 instalado na mquina, voc pode compar?lhar o documento com algum do seu grupo de e-mail ou amigos, com segurana. O WebApp tem tomado conta do mercado no

aplica?vo webapp para mobile, j que usando o padro correto pode ser usado em todos os mveis. O que acha, vale a pena?

mundo, o Google por exemplo j possui o seu editor a um bom tempo, mas no tem toda essa intera?vidade do Word que a Microso^ lanou via browser. D para perceber a diferena quando voc usa um ou outro. No apenas em browsers ou nos computadores,

o WebApp est invadindo os celulares e tablets

Programando para Micro Terminais com C# e Windows Embedded


Introduo Com o avano dos processadores e com os preos em queda dos computadores, torna-se cada vez mais comum ver DUAL CORE com 2Gb de RAM apenas e to somente para realizar um controle de estacionamento, ou controlar impressora scal em um PDV (ponto de venda). Tanto processamento dedicado para uma a?vidade que sem duvida no faz uso de nem 1% de todo poder ofertado pela Maquina. Em casos de a?vidades dedicadas e exclusivas, porque usar um Computador? U?lize um Micro terminal com Windows Embedded, verso do Windows para sistemas dedicados e no necessitam de tanto processamento assim, veja como eh fcil, sem usar linguagem C ou assembler, u?lize. NET!!!. Aquele so^ware que faz tudo o que o cliente precisa mas que na verdade o que o cliente deseja apenas controlar a entrada de carros em um estacionamento comercial, no est com seus dias contatos mas est muito aqum de atender as demandas dedicadas do mercado de so^ware. Este o cenrio que me mo?vou a escrever este ar?go. Porque no construirmos so^wares baseados em Micro Terminal, arquitetura que at pouco tempo atrs era acessado apenas pelos nerds, e ofertar ao cliente um so^ware robusto pela natureza que o Micro Terminal tem, e Dedicado? Porque no? At 4(quatro) anos atrs o impedimento era a linguagem de programao. Mas e se dissssemos que isso possvel hoje em .NET, mas especicamente C#.NET? Sim possvel! Este ar?go abordar o passo a passo de como entrar neste mundo dedicado sem perder o alssimo nvel do .NET Framework. Acompanhe de perto esta Inovao. Emuladores Voc poder de imediato baixar os emuladores de Micro Terminal e perifricos que possibilitara sua primeira viso do que o Micro Terminal e onde ele pode se encaixar no seu desenvolvimento. Ao entrar no Site WWW.desenvolvedoresdaruma.com.br no Link Micro Terminais poder baixar gratuitamente e sem licena de uso por tempo determinado estes emuladores que aparecem na Figura 1.

Figura 1. Emulador de Teclado, Display, Cdigo de Barras e Leitor de Banda Magn?ca, todos os perifricos que compes um Micro Terminal que hoje roda Windows XP Embedded Aps baixar os emuladores, pasme! Voc j esta com 50% do caminho traado para comear a realizar a primeira comunicao em C# com o M icro Terminal. Mas antes disso necessito passar a vocs o conceito de Tags, Tags de comunicao com o Display, que disposi?vo pelo qual o operador e usurio de nosso sistema embedded ir se comunicar e inputar os dados necessrios e solicitados pelo sistema. TAGS A comunicao com o display d-se por meio de TAGS, tags inteligentes que passadas como parmetro de uma DLL (UnManageCode e que pode ser chamada em C#) voc consegue obter o resultado que voc necessita de display. A Lista completa das tags, o que cada uma delas fazem e exemplos em C# voc poder e n c o n t r a r a q u i n e s t e l i n k h y p : / / www.desenvolvedoresdaruma.com.br/home/ downloads/Site_2009/HelpOnline/ Daruma_Framework.htm . Para entender o potencial que um Micro Terminal que roda Windows pode agregar em sua soluo de so^ware, vamos fazer o seguinte: Neste ar?go de inovao vamos criar um aplica?vo que se comunica com o Display e assim d a possibilidade de voc testar toda e qualquer TAG de acesso ao display, possibilitando assim que voc escolha qual TAG usar para implementar em sua regra de negcio.

Programando para Micro Terminais com C# e Windows Embedded


Vamos nos ambientalizar com algumas TAGS e seu resultado: A TAG: <limpar>2</limpar> produzir o seguinte resultado no display conforme gura 2 C# uma DLL UnManageCode fazendo referencia e chamando seu nico Mtodo atravs de P/Invoke. Nada cri?co, quando consideramos que a um tempo atrs pra acessar a um display baixo nvel nhamos que recorrer a ASM ou C ANSI para realizar a operao. Na listagem 1 voc poder encontrar a declarao da DLL que para este nosso exemplo adicionei a classe de acesso a DLL de comunicao e por sua vez adicionamos o using System.Run2me.InteropServices que permite fazer chamadas UnManageCode para componentes e dlls No .NET
Listagem 1. Implementacao da Classe Declaracao_TA2000.cs using System.IO; using System.Run1me.InteropServices; using System.Collec>ons; namespace DarumaFramework_DLL

Figura 2. Execuo da TAG que limpa apenas a segunda linha do display A TAG <limpar>0</limpar><imprimir><texto>Ola Mundo .NET</texto></imprimir> produzir o seguinte resultado no display conforme gura 3

Figura 3. Execuo da TAG que limpa as duas linhas do Display e imprime um texto solicitado pela TAG U2lizando a Inovao, Colocando a mo na massa!! Bem, agora que voc j esta familiarizado com o potencial e facilidade de acesso ao display, e neste momento no tenho duvidas que voc entendeu a lgica de funcionamento das tags, vamos coloca a mo na massa e construir nossa aplicao em C# para interpretar todo e qualquer tag enviada para o display. Conforme gura 3 criei um form bem simples onde possumos dois TextBox onde chamei o primeiro de Comando e o segundo de resposta, na propriedade Name de ambos os TextBox. Logo aps inseri um Boto simples, para que o comando seja enviado ao Display. Aps isso apenas ampliei para 18 o tamanho da letra de Ambos os textbox habilitando o Negrito. Como a comunicao como display acontece atravs de uma falsa porta atravs da DLL DarumaFrameWork.DLL, e uma comunicao baixo nvel, u?lizaremos aqui no

{ /// <summary> /// Classe para uso dos produtos DARUMA FRAMEWORK -- DarumaFramework.dll-- /// FrameWork de comunicacao que interliga todos os produtos DARUMA Automacao /// </summary> public class Declaracao_TA2000 { public int iRetorno; [DllImport("DarumaFrameWork.dll")] // Declaracao da Variavel por Referencia public extern int iEnviarDadosFormatados_TA2000_Daruma(System.String szTexto, [MarshalAs(UnmanagedType.VBByRefStr)] ref string szRetorno); #endregion } }

Programando para Micro Terminais com C# e Windows Embedded


No FORM principal do projeto, no Boto de enviar, conforme gura4 adiciono a listagem 2 abaixo using System; using DarumaFramework_DLL; namespace MicroTerminal_CSharp { public par?al class Form1 : Form { private void buyon1_Click(object sender, EventArgs e) { string sRetornoDisplay = new string(' ', 100); Declaracao_TA2000.iEnviarDadosFormatados_TA2000_ Daruma(Comando.Text, ref sRetornoDisplay); Resposta.Text = sRetornoDisplay; } } } Figura 5. Execuo das tags de edio e input de dados atravs do display com mascara de senha Note ento que a edio e imput de dados possvel sim atravs de um display, mo?vo pelo qual em nosso cdigo de testes prevemos uma varivel por referencia que ir receber o que foi inputado no Display. Se observar no cdigo C# no listado 2 esta varivel aparece com o nome de sRespostaDisplay. Sempre e quando houver a necessidade de retorno de informao por tarde do usurio para o aplica?vo e assim dar con?nuidade a regra de negocio, esta informao ser armazenada nesta varivel por referencia que gerenciada pela DarumaFrameWork.dll Figura 4. Aplica?vo j escrito em C# em Execuo e o envio do Comando para o Display Entrada de Dados pelo Display Isso mesmo! Atravs do C# voc pode criar um formulrio no display para que o usurio possa por exemplo introduzir uma senha de acesso com ECO de * (asterisco) no display. Vejamos como: Execute agora o exemplo em C# e na linha de comandos que criamos no forme m C# adicione a seguinte TAG: <limpar>0</limpar><imprimir><texto>Senha:</ texto></imprimir><edicao><eco>*</eco><?po>3</ ? p o > < t a m a n h o > 6 < / t a m a n h o > < e s c > - 2 7 < / esc><linha>1</linha><coluna>7</coluna></edicao>

Programando para Micro Terminais com C# e Windows Embedded


Poderamos escrever mais e at desenhar passo a passo um aplica?vo real de automao aqui neste aritog ar?go, claro que necessitaramos de mais pginas ou um encarte, mas optei por desenvolver neste ar?go um interpretador de comando para o display e assim voc mesmo poder entrar no help on-line e se experimentar as varias e varias tags existentes para acesso ao display. Gostaria de deixar voc leitor e desenvolvedor com um gos?nho do que voc pode fazer: J imaginou fazer Men de opes em um Display? Um ComboBox em um Display? Um Campo com TextBox em um display? Pois a imaginao pode virar realidade agora com C#.NET e as Tags inteligentes de acesso ao display. baixar no site e comear a desenvolver seu aplica?vo dedicado. ?ma escovao de Bits a todos!! J Referencias WWW.desenvolvedoresdaruma.com.br voc poder baixar os emuladores de Micro Terminais Gratuitamente e comear hoje mesmo, a criar pequenos aplica?vos de testes, u?lizando por exemplo o C# Express edi?on, tambm gr?s e que voc poder baixar aqui: hyp://www.microso^.com/express/vcsharp/. T a m b m n o p o r t a l WWW.desenvolvedoresdaruma.com.br no Link Vdeos dois WEBCASTS podero ser baixados e assis?dos com mais detalhes de como programar para um Micro Terminal u?lizando C# Express Edi?on. Lembrando que a verso Express Edi?on do C# apenas para Hobby e estudo. Todas as TAGS possveis de Formatao voc poder encontrar a qui neste manual on- l i n e : hyp:// www.desenvolvedoresdaruma.com.br/home/ downloads/Site_2009/HelpOnline/ Daruma_Framework.htm Consideraes Finais (Obrigatrio) importante notar que a Microso^ j esta de olho neste segmento de mercado, de computadores embarcados, e no falo de IPqs (nossa quanto tempo! J) de HPs, HandHelds, Celulares, etc.. falo de Micro Computao embarcada com XPembedded e com toda possibilidade de se u?lizar .NET, cdigo gerenciado, com toda a facilidade da programao ofertada pelo .Net FrameWork. Hoje, o estagio desta tecnologia chegou ao nvel um pouco baixo do que a Computao para Micro Terminais. O Estagio atual desta tecnologia, alm de bem avanada surpreendente, voc pode conferir aqui neste site: hyp://www.microso^.com/ netmf/default.mspx At poucos anos atrs era de dar arrepios a programao para MicroTerminais, graas a tecnologia embedded e a oferta de fabricantes de hardware prepararem seus micro terminais e chiparem com XPembedded tornou possvel que u?lizssemos um perifrico simples como o Display, de uma forma mais simples ainda, atravs de cdigo gerenciado e com todo benecio que o .NET Framework coloca nas mos do programador. No que de fora destas novidades e comece hoje mesmo a criar seu so^ware dedicado para situaes dedicadas! J Referncias hyp://www.microso^.com/netmf/default.mspx hyp://desenvolvedoresdaruma.com.br hyp://www.microso^.com/express/vcsharp/. hyp://www.desenvolvedoresdaruma.com.br/home/ downloads/Site_2009/HelpOnline/ Daruma_Framework.htm

Promoo mobile e-book

Você também pode gostar