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");


}

lunes, 27 de julio de 2015

Contenido de un listbox a un archivo plano

Separar un String en torno a otro (Split con String)
Para agregar los items de ubn list box a un archivo es muy sencillo se usa el siguiente codigo:

        private void BtnToCSV_Click(object sender, EventArgs e)
        {
            String Correccion = "";
            foreach (String Line in listBox2.Items)
            {
                Correccion = Correccion + Line + "\n";
            }

            SaveFileDialog dlg = new SaveFileDialog();

            dlg.Filter = "csv files (*.csv)|*.csv";
            dlg.Title = "Export in CSV format";

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                if (dlg.FileName != "")
                {
                    //Pass the filepath and filename to the StreamWriter Constructor
                    StreamWriter sw = new StreamWriter(dlg.FileName);

                    //Write a line of text
                    sw.Write(Correccion);

                    //Close the file
                    sw.Close();
                }
            }
}

Separar un String en torno a otro (Split con String)

Separar un String en torno a otro (Split con String)
Para poder realizar una separación de cadena usando otra cadena , es muy sencillo solo hay que usar la fucion: public string[] Split( string[] separator, StringSplitOptions options ) creado un String[] de un solo elemento el que deseamos separar ejemplo:
using System;

public class SplitTest {
    public static void Main() {

        string CadenaCompleta= "Esta a es la cadena que separeaemos a partir de aqui.... esta seria la parte separada";
        string[] stringSeparators = new string[] { "aqui...." };

        string [] split = CadenaCompleta.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);

        foreach (string s in split) {

            if (s.Trim() != "")
                Console.WriteLine(s);
        }
    }
}
Esto nos separá la cadena por medio del palabra "aqui...."

sábado, 11 de julio de 2015

¿Conoces el “Modo Dios” de Windows?

 Se trata de un menú oculto que sólo está disponible si realizas un sencillo truco, que te vamos a explicar.
 El “Modo Dios” está disponible en Windows Vista, Windows 7, Windows 8 y Windows 8.1.

¿Qué es el “Modo Dios”?

 El “Modo Dios” es una especie de centro de mando oculto que agrupa en un mismo lugar alrededor de 270 accesos directos a opciones de configuración de Windows (depende del equipo).   Desde este centro de mando puedes controlar cualquier aspecto que se te ocurra de tu PC: credenciales, la barra de tareas, el centro de actividades, las cuentas de usuario, idiomas… y la lista sigue. Cualquier aspecto configurable, ahí está.

 ¿Cómo se activa el “Modo Dios”?

 La verdad es que de lo sencillo que es, da casi hasta risa. Sigue estos pasos para activarlo:  

  1.  Crea una nueva carpeta. Puede ser en el Escritorio o dentro de otra carpeta. Donde tú quieras.
  2.  Nombra la carpeta así:   ModoDios.{ED7BA470-8E54-465E-825C-99712043E01C}     
  3. Automáticamente, el icono de la carpeta cambiará, mostrando el icono del Panel de Control y el nombre ModoDios. Ahora puedes darle el nombre que quieras:    
  4. Entra en la nueva carpeta y explora todas las opciones que hay. Puedes cambiar la vista de los iconos y organizarlos a tu antojo


lunes, 8 de junio de 2015

Respaldo de Configuración IIS

Puede que por muchas razones necesario mantener un respaldo de la configuración de nuestro servidor IIS teniendo en cuenta que se debe almacenar por separado los archivos de cada sitio.

Realizar una copia de respaldo 

Lo primero seria iniciar la sesion como administrador y abrir una consola de comandos (cmd.exe),ya dentro de la consola se debe cambiar el directorio: c:\windows\system32\inetsrv


Microsoft Windows [Versión 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.

C:\Users\Administrador>cd \


C:\>cd Windows\system32\inetsrv


C:\Windows\System32\inetsrv>_



Una vez que no encontremos situados en esta carpeta aremos uso de la herramienta:  appcmd.exe
para realizar el respaldo.

Si se desea mas informaicon sobre el uso de este comando se puede visitar la siguiente dirección:
Comando appcmd.exe

Para ello usaremos el comando appcmd.exe add backup ["nombre del respaldo"]


C:\Windows\System32\inetsrv>appcmd.exe add backup "Respaldo 02062015"
Se agregó el objeto de BACKUP "Respaldo 02062015"


Una vez ejecutado el comando de forma existosa pasamos a comprobar la creacion:


C:\Windows\System32\inetsrv>appcmd.exe list backup
BACKUP "Respaldo 02062015"
BACKUP "CFGHISTORY_0000000120"
BACKUP "CFGHISTORY_0000000121"
BACKUP "CFGHISTORY_0000000122"
BACKUP "CFGHISTORY_0000000123"
BACKUP "CFGHISTORY_0000000124"
BACKUP "CFGHISTORY_0000000125"
BACKUP "CFGHISTORY_0000000126"
BACKUP "CFGHISTORY_0000000127"
BACKUP "CFGHISTORY_0000000128"
BACKUP "CFGHISTORY_0000000129"

C:\Windows\System32\inetsrv>


los archivos para respladar quedan en el subdirectorio BACKUP y dentro tendra un sub direcotrio con el nombre del respaldo.


C:\Windows\System32\inetsrv>cd backup

C:\Windows\System32\inetsrv\backup>dir
 El volumen de la unidad C no tiene etiqueta.
 El número de serie del volumen es: 28E4-8D99

 Directorio de C:\Windows\System32\inetsrv\backup

02/06/2015  05:53 p.m.    <DIR>          .
02/06/2015  05:53 p.m.    <DIR>          ..
02/06/2015  05:53 p.m.    <DIR>          Respaldo 02062015
               0 archivos              0 bytes
               3 dirs  85,856,223,232 bytes libres

C:\Windows\System32\inetsrv\backup>cd "Respaldo 02062015"

C:\Windows\System32\inetsrv\backup\Respaldo 02062015>dir
 El volumen de la unidad C no tiene etiqueta.
 El número de serie del volumen es: 28E4-8D99

 Directorio de C:\Windows\System32\inetsrv\backup\Respaldo 02062015

02/06/2015  05:53 p.m.    <DIR>          .
02/06/2015  05:53 p.m.    <DIR>          ..
20/03/2014  02:52 p.m.            25,094 administration.config
25/03/2015  02:13 p.m.            88,139 applicationHost.config
08/09/2011  01:22 a.m.           266,906 MBSchema.xml
01/06/2015  07:16 p.m.            10,515 MetaBase.xml
08/09/2011  01:22 a.m.               490 redirection.config
02/06/2015  05:53 p.m.    <DIR>          schema
               5 archivos        391,144 bytes
               3 dirs  85,849,747,456 bytes libres


C:\Windows\System32\inetsrv\backup\Respaldo 02062015>


Si llegamos a tener un contratiempo, el servidor de daña o tenemos la necesidad de restaurarlo simplemente copiaremos los archivos de los sitios a las carpetas en las rutas correspondientes y el de backup de configuración a la ruta señalada revisameos que se reconosca y ejecutamos el comando para correr el respaldo.


C:\Windows\System32\inetsrv>appcmd.exe list backup
BACKUP "Respaldo 02062015"
BACKUP "CFGHISTORY_0000000120"
BACKUP "CFGHISTORY_0000000121"
BACKUP "CFGHISTORY_0000000122"
BACKUP "CFGHISTORY_0000000123"
BACKUP "CFGHISTORY_0000000124"
BACKUP "CFGHISTORY_0000000125"
BACKUP "CFGHISTORY_0000000126"
BACKUP "CFGHISTORY_0000000127"
BACKUP "CFGHISTORY_0000000128"
BACKUP "CFGHISTORY_0000000129"

c:\Windows\System32\inetsrv>appcmd.exe restore backup "Respaldo 02062015"
Configuración restaurada de la copia de seguridad "Respaldo 02062015"

c:\Windows\System32\inetsrv>


Con eso revisamos que la carpeta que copiamos ha sido reconocida. ahora procederemos a iniciar el la restauracion del respaldo para ello usaremos el comando appcmd.exe add backup ["nombre del respaldo"]


c:\Windows\System32\inetsrv>
appcmd.exe restore backup "Respaldo 02062015"
Configuración restaurada de la copia de seguridad "Respaldo 02062015"


c:\Windows\System32\inetsrv>

Si el mensaje es satisfactorio hemos restaurado la configuración de nuestro IIS