GMap en Windows Forms







Creamos un nuevo proyecto de Windows Forms a continuación descargamos las librerías correspondientes de la pagina de GMap.Net. Encontraremos dos DLL que se llaman GMap.NET.Core.dll y GMap.NETWindowsForms.dll,  las añadiremos a la subcarpeta de references, esto permitirá al código acceder a las clases GMap.Net.
Así mismo añadiremos GMapControl a nuestro cuadro de herramientas lo cual nos facilitara mucho la tarea, de tal forma que podremos establecer las propiedades del control a través del panel de Propiedades.

http://greatmaps.codeplex.com/


ManagementObjectSearcher - Información Hardware



     Me ha costado hacerlo casi un día entero y ahora me doy cuenta de que hay cosas muy mejorables. Por ejemplo el numero de serie del disco habría que modificarlo para que diera los números de serie de todos los discos del ordenador. Lo del usuario tampoco tiene mucho sentido.



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Management;

namespace Informacion_H_S
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        ManagementObjectSearcher informacionprocesador = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
        ManagementObjectSearcher informacionbios = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BIOS");
        ManagementObjectSearcher informacioncdrom = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_CDROMDrive");
        ManagementObjectSearcher informaciondisco = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk");
        ManagementObjectSearcher informacionplaca = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BaseBoard");
        ManagementObjectSearcher informacionusuario = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_UserAccount");


        private void Form1_Load(object sender, EventArgs e)
        {
            foreach (ManagementObject infoprocesador in informacionprocesador.Get())
            {
                if (infoprocesador["maxclockspeed"] != null)
                    textBox3.Text = infoprocesador["maxclockspeed"].ToString();

                if (infoprocesador["datawidth"] != null)
                    textBox2.Text = infoprocesador["datawidth"].ToString();

                if (infoprocesador["name"] != null)
                    textBox1.Text = infoprocesador["name"].ToString();

                if (infoprocesador["Manufacturer"] != null)
                    textBox4.Text = infoprocesador["Manufacturer"].ToString();

                if (infoprocesador["processorID"] != null)
                    textBox8.Text = infoprocesador["processorID"].ToString();

            }

            foreach (ManagementObject infodisco in informaciondisco.Get())
            {
                if (infodisco["VolumeSerialNumber"] != null)
                    textBox5.Text = infodisco["VolumeSerialNumber"].ToString();
            }

            foreach (ManagementObject infobios in informacionbios.Get())
            {
                if (infobios["Caption"] != null)
                    textBox6.Text = infobios["Caption"].ToString();

            }


Capacidad de los discos - 2






using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
using System.IO;

namespace EstadoDiscos
{
    public partial class Estado_Discos : Form
    {
        private long Total = 0;
        private long usado = 0;
        private long libre = 0;
        private float dibujo;
        private int angulo = 360;
        private Rectangle recto;
        LinearGradientBrush Rojo;
        LinearGradientBrush Azul;


        public Estado_Discos()
        {
            InitializeComponent();

        }
        private void dibujar_Paint(object sender, PaintEventArgs e)
        {
         recto = new Rectangle(1, 1, grafico.Width - 5, grafico.Height - 5);
     Rojo = new LinearGradientBrush(recto, Color.FromArgb(255, 5, 5), Color.FromArgb(255, 135, 135), 2000);
     Azul = new LinearGradientBrush(recto, Color.FromArgb(40, 22, 203), Color.FromArgb(111, 183, 215), 2000);
         e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

            if (dibujo != 0)
            {
                e.Graphics.FillPie(Azul, recto, 0, dibujo);
                e.Graphics.FillPie(Rojo, recto, dibujo, angulo - dibujo);
            }
            else
            {
                e.Graphics.FillPie(Azul, recto, 0, 360);
            }

        }

        private long ConvertirbytesaMB(Int64 Bytes)
        {
            long MB = Bytes / 1048576;
            return MB;
        }
        private void leer_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear();

            DriveInfo[] drives = DriveInfo.GetDrives();

            foreach (DriveInfo drive in drives)
            {
                listView1.Items.Add(drive.ToString());
                try
                {
                    usado = this.ConvertirbytesaMB(drive.TotalSize - drive.TotalFreeSpace);
                    libre = this.ConvertirbytesaMB(drive.TotalFreeSpace);
                    Total = this.ConvertirbytesaMB(drive.TotalSize);
                    listView1.Items[listView1.Items.Count - 1].BackColor = Color.Beige;
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add(libre.ToString());
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add(usado.ToString());
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add(Total.ToString());
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add("Listo");
                }
                catch
                {
                    listView1.Items[listView1.Items.Count - 1].BackColor = Color.Peru;
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add("No Instalado");
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add("No Instalado");
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add("No Instalado");
                    listView1.Items[listView1.Items.Count - 1].SubItems.Add("No Preparado");
                }
            }
        }


Reproductor de Windows Media Player - 2


     El mismo programa que el anterior, al que le hemos ocultado los controles propios del reproductor de Windows Media y los hemos sustituido por tres controles de nuestra creación (Play, Pause y Stop).





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Reproductor_windows_Media___2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void abriToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog abrir = new OpenFileDialog();
            abrir.Filter = "Archivo mp3|*.mp3|Archivo mp4|*.mp4|Archivo avi|*.avi|Todos los archivos | *.*";
            abrir.FileName = "Tipo de archivo";
            abrir.FilterIndex = 1;
            if (abrir.ShowDialog() == DialogResult.OK)
            {
                axWindowsMediaPlayer1.URL = (abrir.FileName);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.Ctlcontrols.play();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.Ctlcontrols.pause();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.Ctlcontrols.stop();
        }
    }
}

SoundPlayer - Reproductor de Audio







using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;



namespace Reproductor_de_Audio
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Filter = "Ficheros de audio (.wav)|*.wav";

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                string path = dialog.FileName;
                playSound(path);
            }
        }

        private void playSound(string path)
        {
            System.Media.SoundPlayer player = new System.Media.SoundPlayer();
            player.SoundLocation = path;
            player.Load();
            player.Play();
        }
    }
}


Reproductor Windows Media Player

     NET. Framework tiene la limitación de sólo poder reproducir archivos WAV, por cuestiones de licencia. La otra opción es utilizar el control de Windows Media Player. 
     Para ello dentro de la pestaña "componentes" de la barra del cuadro de herramientas, hacemos click derecho y "Elegir elementos".
Nos vamos a "Componentes COM" y seleccionamos el "Windows Media Player". A partir de ese momento ya lo tenemos disponible en el cuadro de herramientas.
     Creamos el código para leer el fichero y solucionado.





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Reproductor_Windows_Media
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }
        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }
        private void abrirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog abrir = new OpenFileDialog();
            abrir.Filter = "Archivo mp3|*.mp3|Archivo mp4|*.mp4|Archivo avi|*.avi|Todos los archivos | *.*";
            abrir.FileName = "Tipo de archivo";
            abrir.FilterIndex = 1;
            if (abrir.ShowDialog() == DialogResult.OK)
            {
                axWindowsMediaPlayer1.URL = (abrir.FileName);
            }
        }


    }
}

PerformanceCounter - Uso de la CPU





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;

namespace Uso_CPU
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        PerformanceCounter CPU = new PerformanceCounter( "Processor", "% Processor Time", "_Total");
     

        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Text = (CPU.NextValue().ToString() + " %");
        }
    }
}



PerformanceCounter - Memoria Disponible

     Utilidad dudosa, pero es curioso.




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.Threading;

namespace Memoria_disponible
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {

        }

        PerformanceCounter contadoram = new PerformanceCounter("Memory", "Available MBytes");

        public void button1_Click(object sender, EventArgs e)
        {
        textBox1.Text = (contadoram.NextValue().ToString() + " MB");
        }
    }
}


webBrowser - Navegador

Se puede hacer mucho mejor eso seguro. Pero más simple lo veo difícil.







 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Navegador
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void atras_Click(object sender, EventArgs e)
        {
            webBrowser1.GoBack();
        }

        private void adelante_Click(object sender, EventArgs e)
        {
            webBrowser1.GoForward();
        }

        private void actualizar_Click(object sender, EventArgs e)
        {
            webBrowser1.Update();
        }

        private void inicio_Click(object sender, EventArgs e)
        {
            webBrowser1.GoHome();
        }

        private void textBox1_direccion_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.KeyCode == Keys.Enter)
            {
           
            }
        }


DriveInfo - Capacidad de los Discos Duros




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;



// Programa que nos dice la capacidad y tipo de discos que ternemos instalados.


namespace Capacidad_HD
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void capacidadAlmacenamientoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DriveInfo[] allDrives = DriveInfo.GetDrives();

            foreach (DriveInfo d in allDrives)
            {
                rich.AppendText("Disco:  " + d.Name + "\r\n");
                rich.AppendText("\r\n");
                rich.AppendText("Disco local: " + d.DriveType + "\r\n");
                rich.AppendText("\r\n");
                if (d.IsReady == true)
                {
                    rich.AppendText("Etiqueta de Volumen: " + d.VolumeLabel + "\r\n");
                    rich.AppendText("Systema de Archivos:" + d.DriveFormat + "\r\n");
                    rich.AppendText("Espacio disponible para el usuario: " + d.AvailableFreeSpace + " Bytes" + "\r\n");
                    rich.AppendText("Capacidad total espacio en el disco: " + d.TotalSize + " Bytes" + "\r\n");
                    rich.AppendText("Terabyte: " + d.TotalSize / 1099511627776f + "\r\n");
                    rich.AppendText("\r\n");
                }


            }
        }
        private void acercaDeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("(c) Enrique 02-2015 v 1.0");
        }
    }
}





Random - Loterias







     Definimos el rango de los números que deseamos obtener, una matriz para almacenarlos y un objeto Random que recibirá los mensajes NextDouble.

     Obtenemos el siguiente número aleatorio y verificamos si ya existe en la matriz, en cuyo  caso lo desechamos y volvemos a obtener otro. Este proceso lo repetimos hasta haber generado todos los números solicitados.

     La sentencia for externa define cuántos números se van a generar. Cuando se genera un número se almacena en la siguiente posición de la matriz. Después, la sentencia for interna compara el último número generado con todos los anteriormente generados. Si ya existe, se decrementa el índice i de la matriz para que cuando sea incrementado de nuevo por el for externo apunte al elemento repetido y sea sobrescrito por el siguiente número generado.

     Una vez obtenidos todos los números, ordenamos la matriz y la visualizamos.

    Que se puede hacer escribiendo menos código.  De eso estoy absolutamente seguro.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Loteria
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void toolStripMenuItem3_Click(object sender, EventArgs e)
        {
            Close();
        }
        private void primitivaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            {
                int i, k, numeroMaximo = 49, numeroMinimo = 1;
                int[] n = new int[6];
                // Crear un objeto de la clase Random
                Random rnd = new Random();
                for (i = 0; i < n.Length; i++)
                {
                    // Obtener un número aleatorio
                    n[i] = (int)((numeroMaximo - numeroMinimo + 1) * rnd.NextDouble() + numeroMinimo);
                    // Verificar si ya existe el último número obtenido
                    for (k = 0; k < i; k++)
                        if (n[k] == n[i])    // ya existe
                        {
                            i--;            // i sera incrementada por el for externo
                            break;          // salir de este for
                        }
                }
                // Ordenar la matriz
                Array.Sort(n);
                //  Mostrar la matriz
                for (i = 0; i < n.Length; i++)
                {
                    textBox1.Text += (n[i] + "  .  ");
                }
            }
        }


Char.Is... - Validar Letras y Números - I


     En casi cualquier aplicación que hagamos y la usen terceras personas, sera absolutamente necesario controlar la captura de datos, de tal forma que cada campo acepte solamente los datos correctos. De esta forma nos evitamos hacer un tratamiento menos en la gestión de errores (excepciones).
     El evento que vamos a manejar es el KeyPress, que se activa cada vez que pulsemos una tecla.






using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Letras_Numeros
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsLetter(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSymbol(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsWhiteSpace(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
                MessageBox.Show("Solo Letras", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }


Office.Interop.Word - Insertar Corrector Ortográfico - II


Repetimos el programa anterior sobre un proyecto de Windows Forms con un RichTextbox:










Office.Interop.Word - Insertar Corrector Ortografico


A fin de mejorar nuestras aplicaciones, en las que se utiliza texto, y sobre todo si esta aplicación se va utilizar por terceras personas, es interesante darles la posibilidad de utilizar un corrector ortográfico.
Vamos a implementar el corrector que viene con Microsoft Word.

Podemos crear un proyecto de Windows Forms o insertarlo sobre un procesador de texto que hayamos creado previamente. Es indistinto que nuestra aplicación utilice un Textbox o un RichTextbox. Crearemos sobre la aplicación un button o una opción en el menú.

Yo he optado por esta segunda opción:



A continuación agregaremos a nuestro proyecto la referencia:

microsoft.Office.interop.Word, yo he utilizado la versión 15.0.0.0, tampoco sabría decir si una versión es mejor que otra.




CopyFromScreen - Captura de Pantalla





El codigo original de este programa pertenece a Maniax. Pagina que me ha inspirado profundamente en la realización de algunas rutinas. Lastima que su propietario ya no la actualice.

http://csharpmaniax.blogspot.com.es/


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

// Codigo original de Maniax

namespace Captura_de_Pantalla
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void capturaPantallaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Bitmap bmpCaptura = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
            Graphics Captura = Graphics.FromImage(bmpCaptura);

            //se toma la impresión de pantalla

SystemSounds - Sonidos del Sistema


Podemos utilizar los distintos sonidos del sistema para invocarlos en las rutinas que los necesitemos.




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Sonidos_de_Windows
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void acercaDeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("(c) Enrique 01-2015\r\n" + "Sonidos de Windows");
        }

Visor de Imagenes





Mas sencillo no puede ser. A partir de aquí se puede ir completando con todas las funcionalidades que queramos.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace Visor_de_imagenes
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void acercaDeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show ("Enrique 01-2015\r\n" + "Visor de Imagenes v.0.1\r\n");
        }