msn no site + Asp.net



Nesses artigos vamos utilizar o recurso da Microsoft e customizar esse componente para melhores resultados.
Com a opção de chat nos sites facilitou a comunicação entre cliente e vendedores tornando mais humano a interações entre ambos, e com essa modificação você poderá usar e abusar da nossa criatividade.

Desenvolvimento
Primeira mente precisamos configurar esse recurso no site da Microsoft, para acessar basta entrar nessa pagina http://settings.messenger.live.com/applications/WebSettings.aspx

Configuração do Modulo.

Você estará abrindo uma página de configurações do MSN no live.com, preencha seus dados referente ao seu Windows Live ID.
A próxima página irá exibir uma opção chamada " Permitir que qualquer pessoa na Web veja a minha presença e me envie mensagens.". Marque ela e clique em "salvar" na barra acima.
Após salvar suas configurações, clique no menu "Criar HTML" localizado na lateral esquerda.
Nesta página, vamos escolher  o  controle botão Lembrando que o seu usuário poderá utilizar seu Windows Live ID próprio ou manda uma mensagem como "Visitante".
Logo abaixo aparece um campo onde é exibido um código que você deve copiar e salvar em um bloco de notas.

Vamos iniciar o Visual Studio, criei um novo projeto Web Application ou Web Site nesse exemplo estou utilizando Web Application usando a versão do .NET Framework 3.5

Na página default.aspx entre no source da pagina,  e acrescente na teg head  o componente jquery,e vamos acrescentar o código Java script que fará o controle se o MSN esta online ou não, abaixo a imagem ilustrativa da estrutura do código.
Explorando o código Java script.

  <script type="text/javascript">
<!--< Classe msnStatus ela retorna o status do MSN >-->
  function msnStatus(presence) {
            var idx = presence.id.indexOf('@');
            if (idx >= 0) {
                var id = presence.id.substr(0, idx);
                var element = document.getElementById('Microsoft_Live_Messenger_PresenceButton_' + id);
                if (element) {
                    element.innerHTML = "";

                    var conversationUrl = element.attributes['msgr:conversationUrl'].value;

                    var statusIcon = document.createElement('img');

                    var Status = statusIcon.title = presence.statusText;
<!--<Recebe o status da variável “Status”, e como valor fazemos  as comparações  e atribuímos  para a variável especifica -->
                    $(document).ready(function () {

                        var txtMsnOn = "Clique aqui (Atendente está Online)";

                        var txtMsnOcupado = "Clique aqui (Atendente está Ocupado)";

                        var txtMsnAusente = "Clique aqui (Atendente está Ausente)"

                        var txtMsnOf = "Atendente está Offline";



                        $("#boxstatusMsn").removeAttr("class");

                        if (Status == "Offline") {
           <!-- < Caso o status da variável seja offline, atribuo para o meu span o texto da variável “txtMsnOf”-->
                            $("#statusMsg").text(txtMsnOf);

                        }

                        else if (Status == "Ocupado") {

                            $("#statusMsg").text(txtMsnOcupado);

                        }

                        else if (Status == "Ausente") {

                            $("#statusMsg").text(txtMsnAusente);

                        }

                        else {

                            $("#statusMsg").text(txtMsnOn);

                        }

                    });

                }
            }        }

  </script>

Depois de conhecer a estrutura do java script temos que configurar o corpo de nossa pagina dentro da  tag body ,precisamos colocar os seguinte código como no exemplo a baixo.

    <div>
     Atendimento:<span><a href="http://settings.messenger.live.com/Conversation/IMMe.aspx?invitee=e709ab67aad5cfca@apps.messenger.live.com&mkt=pt-br"><label id="statusMsg"></label></a></span>

<div id="Microsoft_Live_Messenger_PresenceButton_e709ab67aad5cfca" msgr:conversationUrl="http://settings.messenger.live.com/Conversation/IMMe.aspx?invitee=e709ab67aad5cfca@apps.messenger.live.com&mkt=pt-br"></div>

<script type="text/javascript" src="http://messenger.services.live.com/users/e709ab67aad5cfca@apps.messenger.live.com/presence?dt=&mkt=pt-br&cb=msnStatus"></script>

    </div>

Agora precisamos usar o código gerado pela Microsoft que  provavelmente está como o código abaixo. Nesse código o que vamos aproveitar e apenas o id gerado pela Microsoft localizado na letra vermelha uma vez localizado o id vamos copiar esse código  e apagar a estrutura da Microsoft e vamos deixar na nossa body  a estrutura  que montei

Estrutura Microsoft.

<script type="text/javascript" src="http://settings.messenger.live.com/controls/1.0/PresenceButton.js"></script>
<div
  id="Microsoft_Live_Messenger_PresenceButton_e709ab67aad5cfca"
  msgr:width="100"
  msgr:backColor="#D7E8EC"
  msgr:altBackColor="#FFFFFF"
  msgr:foreColor="#424542"
  msgr:conversationUrl="http://settings.messenger.live.com/Conversation/IMMe.aspx?invitee=e709ab67aad5cfca@apps.messenger.live.com&mkt=pt-BR"></div>
<script type="text/javascript" src="http://messenger.services.live.com/users/e709ab67aad5cfca@apps.messenger.live.com/presence?dt=&mkt=pt-BR&cb=Microsoft_Live_Messenger_PresenceButton_onPresence"></script>


Estrutura Tutorial

Essa estrutura e que vamos utilizar no corpo da nossa pagina mais antes precisamos alterar  o id dessa estrutura pelo id gerado pela Microsoft, para ter uma maior segurança podemos localizar e substituir usando o Visual Studio apertanto a tecla ctrl+f  


<div>
     Atendimento:<span><a href="http://settings.messenger.live.com/Conversation/IMMe.aspx?invitee=e709ab67aad5cfca@apps.messenger.live.com&mkt=pt-br"><label id="statusMsg"></label></a></span>
<div id="Microsoft_Live_Messenger_PresenceButton_e709ab67aad5cfca" msgr:conversationUrl="http://settings.messenger.live.com/Conversation/IMMe.aspx?invitee=e709ab67aad5cfca@apps.messenger.live.com&mkt=pt-br"></div>

<script type="text/javascript" src="http://messenger.services.live.com/users/e709ab67aad5cfca@apps.messenger.live.com/presence?dt=&mkt=pt-br&cb=msnStatus"></script>

    </div>


Exemplo do código do body da pagina.

 <body>
    <form id="form1" runat="server">
    <div>
     Atendimento:<span><a href="http://settings.messenger.live.com/Conversation/IMMe.aspx?invitee=e709ab67aad5cfca@apps.messenger.live.com&mkt=pt-br"><label id="statusMsg"></label></a></span>

<div id="Microsoft_Live_Messenger_PresenceButton_e709ab67aad5cfca" msgr:conversationUrl="http://settings.messenger.live.com/Conversation/IMMe.aspx?invitee=e709ab67aad5cfca@apps.messenger.live.com&mkt=pt-br"></div>

<script type="text/javascript" src="http://messenger.services.live.com/users/e709ab67aad5cfca@apps.messenger.live.com/presence?dt=&mkt=pt-br&cb=msnStatus"></script>

    </div>
    </form>
</body>
Resultado Final.


Com essa funcionalidade na sua pagina você poderá colocar imagem ou personalizar o status de acordo com a mensagem recebida pela Microsoft.

Conexão Mysql + ASP.NET

using System;
using System.Data;
using MySql.Data.MySqlClient;

namespace sgdc
{
    /// <summary>
    /// Classe para manipulação de acesso a dados do banco de dados Mysql
    /// </summary>
      
    public class mysql
    {
        MySqlConnection _conexao;
        MySqlCommand _comando;
        MySqlTransaction _transacao;
        bool _gerenciarConexaoAutomatica = true;

        /// <summary>
        /// Objeto SqlCommand para execução de instruções SQL.
        /// </summary>
        public MySqlCommand Comando
        {
            get { return _comando; }
            set { _comando = value; }
        }
        /// <summary>
        /// Retorna o objeto de conexão tipo SqlConnection.
        /// </summary>
        public MySqlConnection Conexao
        {
            get { return _conexao; }
        }

        /// <summary>
        /// Retorna o objeto de transação tipo SqlTransaction.
        /// </summary>
        public MySqlTransaction Transacao
        {
            get { return _transacao; }
        }
        /// <summary>
        /// Inicia uma transação com o banco de dados. A conexão será aberta caso esteja fechada e o objeto Comando ligado a transação.
        /// </summary>
        public bool GerenciarConexaoAutomatica
        {
            get { return _gerenciarConexaoAutomatica; }
            set { _gerenciarConexaoAutomatica = value; }
        }
      
        /// <summary>
        /// Construtor da classe.
        /// </summary>
        public mysql()
        {
            _conexao = new MySqlConnection();
            _conexao.ConnectionString = "server=;uid=;pwd=;database=";
            _comando = _conexao.CreateCommand();
        }
        /// <summary>
        /// Construtor da classe.
        /// </summary>
        /// <param name="gerenciaConexaoAutomatica">Indica se o a conexão do banco de será automaticamente gerenciada.</param>
        public mysql(bool gerenciaConexaoAutomatica)
        {
            _conexao = new MySqlConnection();
            _conexao.ConnectionString = "server=;uid=;pwd=;database="";
            _comando = _conexao.CreateCommand();
            _gerenciarConexaoAutomatica = gerenciaConexaoAutomatica;
        }
      
        /// <summary>
        /// Abre a conexão com o banco de dados.
        /// </summary>
        public void AbrirConexao()
        {
            if (_conexao.State == ConnectionState.Closed)
                _conexao.Open();
        }/// <summary>
        /// Fecha a conexão com o banco de dados.
        /// </summary>
        public void FecharConexao()
        {
            if (_conexao.State == ConnectionState.Open)
                _conexao.Close();
        }

        /// <summary>
        /// Inicia uma transação com o banco de dados. A conexão será aberta caso esteja fechada.
        /// </summary>
        public void IniciarTransacao()
        {
            if (_conexao.State == ConnectionState.Closed)
                _conexao.Open();

            _transacao = _conexao.BeginTransaction();
            _comando.Transaction = _transacao;
        } /// <summary>
        /// Executa o objeto Comando (SqlCommand) com uma instrução Select.
        /// </summary>
        /// <returns>Retorna um objeto DataTable com o resultado da consulta.</returns>
        public DataTable ExecutarComando()
        {
            if (_comando.CommandText == string.Empty)
                throw new Exception("Comando sem instrução SQL.");

            DataTable dt = new DataTable();

            try
            {
                if (_conexao.State == ConnectionState.Closed)
                    _conexao.Open();

                MySqlDataReader dr = _comando.ExecuteReader();

                dt.Load(dr);
            }
            catch (Exception ex)
            {

                if (_transacao != null)
                {
                    _transacao.Rollback();
                    _transacao = null;
                }

                if (_conexao.State == ConnectionState.Open)
                    _conexao.Close();

                throw new Exception("Erro em Bancos.SqlServer.ExecutarComando.", ex);
            }
            finally
            {
                if (_gerenciarConexaoAutomatica)
                    _conexao.Close();
            }

            return (dt);
        }
        /// <summary>
        /// Executa o objeto Comando (SqlCommand) com uma instrução Select.
        /// </summary>
        /// <param name="sql">Instrução SELECT</param>
        /// <returns></returns>
        public DataTable ExecutarComando(string sql)
        {
            _comando.CommandText = sql;
            return (ExecutarComando());
        }

        /// <summary>
        /// Executa o objeto Comando (SqlCommand) com uma instrução SQL Scalar.
        /// </summary>
        /// <returns>Retorna um objeto do tipo Object, sendo possível ser convertido para qualquer tipo de dado.</returns>

        public object ExecutarComandoScalar()
        {
            if (_comando.CommandText == string.Empty)
                throw new Exception("Comando sem instrução SQL.");

            object retorno = 0;

            try
            {
                if (_conexao.State == ConnectionState.Closed)
                    _conexao.Open();

                retorno = _comando.ExecuteScalar();

            }
            catch (Exception ex)
            {

                if (_transacao != null)
                {
                    _transacao.Rollback();
                    _transacao = null;
                }

                if (_conexao.State == ConnectionState.Open)
                    _conexao.Close();

                throw new Exception("Erro em Bancos.SqlServer.ExecutarComandoScalar.", ex);
            }
            finally
            {
                if (_gerenciarConexaoAutomatica)
                    _conexao.Close();
            }

            return (retorno);
        }

        /// <summary>
        /// Executa o objeto Comando (SqlCommand) com uma instrução SQL Scalar.
        /// </summary>
        /// <param name="sql">Instrução SELECT</param>
        /// <returns>Retorna um objeto do tipo Object, sendo possível ser convertido para qualquer tipo de dado.</returns>
        public object ExecutarComandoScalar(string sql)
        {
            _comando.CommandText = sql;
            return (ExecutarComandoScalar());
        }

        /// <summary>
        /// Executa o objeto Comando (SqlCommand) com uma instrução Insert, Update ou Delete, ou ainda execução de StoredProcedure.
        /// </summary>
        /// <returns>Retorna o número de linhas afetadas durante a execução.</returns>
        public int ExecutarComandoNonQuery()
        {
            if (_comando.CommandText == string.Empty)
                throw new Exception("Comando sem instrução SQL.");

            int linhasAfetadas = 0;

            try
            {
                if (_conexao.State == ConnectionState.Closed)
                    _conexao.Open();

                linhasAfetadas = _comando.ExecuteNonQuery();

            }
            catch (Exception ex)
            {

                if (_transacao != null)
                {
                    _transacao.Rollback();
                    _transacao = null;
                }


                if (_conexao.State == ConnectionState.Open)
                    _conexao.Close();

                throw new Exception("Erro em Bancos.SqlServer.ExecutaComandoNonQuery.", ex);
            }
            finally
            {
                if (_gerenciarConexaoAutomatica)
                    _conexao.Close();
            }

            return (linhasAfetadas);
        }
        /// <summary>
        ///  Executa o objeto Comando (SqlCommand) com uma instrução Insert, Update ou Delete, ou ainda execução de StoredProcedure.
        /// </summary>
        /// <param name="sql">Instrução Insert, Update ou Delete</param>
        /// <returns>Retorna o número de linhas afetadas durante a execução.</returns>
        public int ExecutarComandoNonQuery(string sql)
        {
            _comando.CommandText = sql;
            return (ExecutarComandoNonQuery());
        }
    }
}

Robô usa sensor Kinect para resgatar vítimas de terremotos


O sistema de sensor Kinect, desenvolvido pela Microsoft para o videogame Xbox 360, já provou ter utilidades além da diversão, tal como demonstrou um grupo de estudantes britânicos que construiu um robô capaz de resgatar vítimas de um terremoto graças a essa tecnologia.
Teleguiado, autônomo e com um aspecto similar ao de famosos robôs como Wall-E e o protagonista do filme Um Robô em Curto Circuito. Assim é o autômato criado pelo grupo de estudantes da Universidade de Warwick (Reino Unido), que se apresentou na feira The Gadget Live Show 2011, aberta até este domingo na cidade britânica de Birmingham.
Um de aspecto muito mais agressivo é o do "Titan the Robot", que exibiu na feira seus 2,4 m e 350 kg de exoesqueleto com o objetivo de mostrar que um futuro de androides é possível.
Divulgar as últimas curiosidades tecnológicas e permitir que o público em geral possa ver, usar e até comprar os dispositivos mais inovadores são alguns dos ambiciosos objetivos desta feira anual, que nesta edição teve como uma das grandes atrações a eletricidade sem fio.
Essa tecnologia já tinha sido apresentada em 2010 durante a Feira Internacional de Eletrônica de Consumo (CES, realizada em Las Vegas), mas os avanços da chamada eCoupled voltaram à tona com um sistema de energia sem fio que permite recarregar baterias de telefones ou fritar um ovo graças a uma base que funciona como fonte de alimentação.
Mas nem tudo são novidades no The Gadget Live Show de Birmingham. Os mais nostálgicos podem voltar na História da informática e apreciar lembranças como o brinquedo "Furby", um robô de pelúcia que ganhou fama no final do século passado.
Nesta edição da feira, as imagens 3D se consolidaram como um dos elementos tecnológicos mais populares entre os visitantes, que podem aproveitar uma área reservada para jogar games como "Shift 2: Unleashed" e "Crysis 2", além de "alguns títulos secretos que não podemos anunciar", destacam os responsáveis da feira em seu site. "Duke Nukem: Forever" e a versão Lego de "Piratas do Caribe" para PlayStation 3 e PSP são alguns dos títulos que os fãs podem experimentar neste evento.
O The Gadget Live Show 2011 conta também com um completo programa de conferências sobre futuros projetos tecnológicos, sobre os gadgets mais "explosivos", além de debates sobre tablets e smartphones. Foram apresentados ainda novos modelos de televisores, celulares com as últimas versões do sistema operacional Android e alguns "supercelulares"

Construindo um VALIDADOR DE NUMEROS

<html>
<head>
<script language="JavaScript" type="text/javascript">

function mascara_Numero(campo,leg,msg)
{  
valor = document.getElementById(campo.id).value;
legenda = document.getElementById(leg);
pos=0;
  while(pos < valor.length && valor!="")
  {
  if((  valor.charCodeAt(pos)!= 144 &&  valor / valor >0))
legenda.innerHTML = "";
  else
  {
  legenda.innerHTML = "<font color='red'>" + msg + "</font>";
  return false;
  }
 po++;

  }
};
</script>
<body>
<form name="formCadastro" id="formulario" method="post" action="#" >

Codigo:<br/>
<input type="text" name="txtCodigo" id="Numero"  size="10" maxlength="6" onkeyup="mascara_Numero(this,'codigo','Digite apenas números')"/>
<label id="codigo"></label> <br/>
 </form>
</body>
</html>

De volta a ativa

Boa noite pessoal depois de 2 meses sem postar nada no blog quero comunicar que o blog voltou com força total, e estamos fazendo excelente artigos então não perca....