martes, 25 de agosto de 2015

NotifyIcon ocultar aplicación en el área de notificación de Windows

Separar un String en torno a otro (Split con String)
Ocultar nuestro programa en la barra de tareas es algo que podemos usar cueando un programa no requiere de supervision o queremos que se ejecute en segundo plano pudiendo acceder a  el en cualquier momento.

Para lo cual se usa una conjunción de los componenetes notifyIcon y contextMenuStrip

        private void ejecutarLimpiezaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //Tipo de icono a mostrar el el globo informativo (Info, Error, None, Warning)
            notifyIcon1.BalloonTipIcon = ToolTipIcon.Info;
            //Título del balón informativo (el nombre de la aplicación)
            notifyIcon1.BalloonTipTitle = Application.ProductName;
            //Texto del balón informativo
            notifyIcon1.BalloonTipText = "Ejecutado limpieza";
            //Tiempo que aparecerá hasta ocultarse automáticamente
            notifyIcon1.ShowBalloonTip(3);
            listBox1.Items.Clear();
            listFiles(textBox1.Text);
            LogFile();
            notifyIcon1.BalloonTipIcon = ToolTipIcon.Info;
            notifyIcon1.BalloonTipTitle = Application.ProductName;
            notifyIcon1.BalloonTipText = "Limpieza terminada";
            notifyIcon1.ShowBalloonTip(8);
        }

        private void terminarAplicacionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void mostrarAplicacionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Show();
            WindowState = FormWindowState.Normal;
            Activate();
            notifyIcon1.Visible = false;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            notifyIcon1.Icon = this.Icon;
            notifyIcon1.ContextMenuStrip = this.contextMenuStrip1;
            notifyIcon1.Text = Application.ProductName;
            notifyIcon1.Visible = true;
            this.Visible = false;

            notifyIcon1.BalloonTipIcon = ToolTipIcon.Info;
            notifyIcon1.BalloonTipTitle = Application.ProductName;
            notifyIcon1.BalloonTipText = "La aplicación ha quedado ocultada " +
                "en el área de notificación. Para mostrarla haga " +
                "doble clic sobre el icono";
            notifyIcon1.ShowBalloonTip(8);
        }

        private void Form1_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                notifyIcon1.Icon = this.Icon;
                notifyIcon1.ContextMenuStrip = this.contextMenuStrip1;
                notifyIcon1.Text = Application.ProductName;
                notifyIcon1.Visible = true;
                this.Visible = false;

                notifyIcon1.BalloonTipIcon = ToolTipIcon.Info;
                notifyIcon1.BalloonTipTitle = Application.ProductName;
                notifyIcon1.BalloonTipText = "La aplicación ha quedado ocultada " +
                    "en el área de notificación. Para mostrarla haga " +
                    "doble clic sobre el icono";
                notifyIcon1.ShowBalloonTip(8);
            }
        }

        private void notifyIcon1_DoubleClick(object sender, EventArgs e)
        {
            Show();
            WindowState = FormWindowState.Normal;
            Activate();
            notifyIcon1.Visible = false;
        }

viernes, 21 de agosto de 2015

Enviado Correo electronico desde C#

Separar un String en torno a otro (Split con String)
Para enviar correo electrónico desde nuestro código de forma muy sencilla.Para hacerlo necesitaremos 3 objetos o clases integradas en el Framework de .NET :

- System.Net.Mail.MailMessege: Nos permite encapsular todos las propiedades de nuestro mensaje.

- System.Net.Mail.MailAddress: Representa una dirección de correo electrónico.

- System.Net.Mail.SmtpClient: Representa un cliente de correo electrónico basado en el protocolo SMTP.

Veamos el codigo:

    public void EnviarCorreo()
    {
        /*-------------------------MENSAJE DE CORREO Objeto MailMessage----------------------*/
        //Creamos un nuevo Objeto de mensaje
        System.Net.Mail.MailMessage mmsg = new System.Net.Mail.MailMessage();

        //Direccion de correo electronico a la que queremos enviar el mensaje pueden agregarse tantos destinatarios como sea posible mediante la función Add ya que es una coleccion
        mmsg.To.Add("destinatario@servidordominio.com");

        //msg.To.Add("destinatario2@servidordominio.com");
        //msg.To.Add("destinatario3@otrodominio.com");


        //Asunto
        mmsg.Subject = "Asunto del correo";
        mmsg.SubjectEncoding = System.Text.Encoding.UTF8;

        //Direccion de correo electronico que queremos que reciba una copia del mensaje si es que se requiere esto es opcional
        mmsg.Bcc.Add("destinatariocopia@servidordominio.com"); 

        //Cuerpo del Mensaje
        mmsg.Body = "Texto del contenio del mensaje de correo";
        mmsg.BodyEncoding = System.Text.Encoding.UTF8;
        mmsg.IsBodyHtml = false; //Si no queremos que se envíe como HTML se pone en true si se crea el cuerpo con HTML esto noda una amplia funcion en los formatos de correos.

        //Correo electronico desde la que enviamos el mensaje
        mmsg.From = new System.Net.Mail.MailAddress("micuenta@servidordominio.com");


        /*-------------------------CLIENTE DE CORREO Objeto SmtpClient---------------------*/

        //Creamos un objeto de cliente de correo
        System.Net.Mail.SmtpClient cliente = new System.Net.Mail.SmtpClient();

        //Hay que crear las credenciales del correo emisor es decir el acceso de nuestro correo electronico
        cliente.Credentials = new System.Net.NetworkCredential("micuenta@servidordominio.com", "micontraseña");

        //Lo siguiente es obligatorio si enviamos el mensaje desde Gmail o servidores que usan SSL
        /*
        cliente.Port = 587;  
        cliente.EnableSsl = true;
        */

        cliente.Host = "mail.servidordominio.com"; 


        /*-------------------------ENVIO DE CORREO----------------------*/

        try
        {
            //Enviamos el mensaje      
            cliente.Send(mmsg);
        }
        catch (System.Net.Mail.SmtpException ex)
        {
            //Aquí gestionamos los errores al intentar enviar el correo
        }
    }

Determinar si tu laptop usa esta usado la bateria o la corriente usando C#

Separar un String en torno a otro (Split con String)
Para algunos procesos es indispensable poder saber si se usa la batería o el nivel de carga si se esta usando una laptop por ejemplo para no dejar a medias un proceso por falta de batería que pueda dejar colgado el servidor o algo parecido... podemos incluir en nuestras aplicaciones un método para evitar esto; yo en mi caso lo usare para saber en que momento una lap se cambia a la batería lap que dejo conectada para hacer respaldos pero si se va la luz en la noche cambiara a la batería y quiero que me avise para apagar bien los servidores y evitar perdida de información por daños..

C#


private void btnPower_Click(object sender, EventArgs e)
{
   PowerLineStatus status = SystemInformation.PowerStatus.PowerLineStatus;
    if (status == PowerLineStatus.Offline)
        MessageBox.Show("Utilizando Bateria");
    else
        MessageBox.Show("Corriente directa");


}