Sigueme en Twitter
AJDev.net en Facebook
AJDev.net en Facebook
Traducir
Mapa de Visitas
Locations of visitors to this page

Como parte de una serie de Presentaciones en universidades mostrando como se le puede sacar provecho al TaskBar de Windows 7 pues en este post tratare de explicar lo mas sencillo posible… Mi enfoque sigue siendo el mismo que es el desarrollo web pero en esta ocasión hare la excepción (Soy desarrollador no me culpen por intentar aprender mas cosas) :) jejeje

Primero lo primero debemos ir a esta dirección y descargar las API’s de Windows 7 para poder trabajar con el TaskBar: http://code.msdn.microsoft.com/WindowsAPICodePack

Luego de esto pues manos a la obra:

1. Crearemos una aplicación Windows (También pueden trabajar con WPF :)) en Visual Studio 2008, seleccionando el Framework 3.5:

image

2. Ahora dándole click derecho a la solución buscaremos los proyectos que descargamos (las API’s para Windows 7) el cual necesitaremos el Core y Shell:

 

image

3. Luego de agregar los proyectos nos ubicamos en el Proyecto donde dibujaremos los controles y agregaremos las Referencias a los proyectos agregado a la Solución:

image

4. Dibujaremos una pantalla como esta:

image

5. Agregan estas referencias al proyecto:

image

image

6. Luego agregamos los iconos de su preferencia al archivo de Recurso:

image

7. Y colocan este código:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.WindowsAPICodePack.Taskbar;
using Microsoft.WindowsAPICodePack.Shell;
using System.IO;

namespace DemoTaskBarWin7
{
    public partial class Form1 : Form
    {
        private TaskbarManager windowsTaskbar = TaskbarManager.Instance;
        private JumpList jump;
        private static string AppId = "Demo-Taskbar";
        private ThumbnailToolbarButton CerrarSession;
        private ThumbnailToolbarButton btnInfo;

        public Form1()
        {
            InitializeComponent();
            this.Shown += new EventHandler(Form1_Shown);
            this.btnAgregar.Click+=new EventHandler(btnAgregar_Click);
            this.btnAlerta.Click+=new EventHandler(btnAlerta_Click);
            this.btnCerrar.Click+=new EventHandler(btnCerrar_Click);
            this.btnNotepad.Click+=new EventHandler(btnNotepad_Click);
            this.btnPaint.Click+=new EventHandler(btnPaint_Click);
            this.btnJump.Click+=new EventHandler(btnJump_Click);
            this.button1.Click+=new EventHandler(button1_Click);
            this.btnSeparador.Click+=new EventHandler(btnSeparador_Click);
            this.checkBoxPreviewClip.CheckedChanged+=new EventHandler(checkBoxPreviewClip_CheckedChanged);
            this.btnBuscar.Click+=new EventHandler(btnBuscar_Click);
            this.btnCalculadora.Click+=new EventHandler(btnCalculadora_Click);
            this.ebCarpetas.SelectionChanged+=new Microsoft.WindowsAPICodePack.Controls.ExplorerBrowserSelectionChangedEventHandler(ebCarpetas_SelectionChanged);
            this.cboEstados.SelectedIndexChanged+=new EventHandler(cboEstados_SelectedIndexChanged);
            
            if (!TaskbarManager.IsPlatformSupported)
            {
                MessageBox.Show("Este Demo requiere Windows 7");
                Application.Exit();
            }
            windowsTaskbar.ApplicationId = AppId;
        }

        private void Form1_Shown(object sender, EventArgs e)
        {
            jump = JumpList.CreateJumpList();
            jump.Refresh();
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            if (fbdCarpetas.ShowDialog() == DialogResult.OK)
            {
                txtRuta.Text = fbdCarpetas.SelectedPath;
                ebCarpetas.Navigate(ShellFolder.FromParsingName(txtRuta.Text));
            }
        }

        //Mostrar Los items seleccionado en el ExplorerBrowser
        private void ebCarpetas_SelectionChanged(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder();
            foreach (ShellObject item in ebCarpetas.SelectedItems)
            {
                if (item != null)
                    sb.AppendLine("\tItem Seleccionado = " + item.GetDisplayName(DisplayNameType.Default));
            }
            txtItems.Text = sb.ToString();
        }

        #region ProgressBar
        private void cboEstados_SelectedIndexChanged(object sender, EventArgs e)
        {
            windowsTaskbar.SetProgressState((TaskbarProgressBarState)Enum.Parse(typeof(TaskbarProgressBarState), cboEstados.Text));
        }
 
        #endregion

        #region Tareas en el TaskBar

        private void btnNotepad_Click(object sender, EventArgs e)
        {
            string sRuta = Environment.GetFolderPath(Environment.SpecialFolder.System);
            jump.AddUserTasks(new JumpListLink(Path.Combine(sRuta, "notepad.exe"), "Abrir Notepad")
            {
                IconReference = new IconReference(Path.Combine(sRuta, "notepad.exe"), 0)
            });
        }
        private void btnCalculadora_Click(object sender, EventArgs e)
        {
            string sRuta = Environment.GetFolderPath(Environment.SpecialFolder.System);
            jump.AddUserTasks(new JumpListLink(Path.Combine(sRuta, "calc.exe"), "Abrir Calculadora")
            {
                IconReference = new IconReference(Path.Combine(sRuta, "calc.exe"), 0)
            });
        }
        private void btnPaint_Click(object sender, EventArgs e)
        {
            string sRuta = Environment.GetFolderPath(Environment.SpecialFolder.System);
            jump.AddUserTasks(new JumpListLink(Path.Combine(sRuta, "mspaint.exe"), "Abrir Paint")
            {
                IconReference = new IconReference(Path.Combine(sRuta, "mspaint.exe"), 0)
            });
        }
        private void btnJump_Click(object sender, EventArgs e)
        {
            jump.Refresh();
        }
        private void btnSeparador_Click(object sender, EventArgs e)
        {
            jump.AddUserTasks(new JumpListSeparator());
        }

        #endregion

        #region Cambiar Iconos en el TaskBar

        private void btnAlerta_Click(object sender, EventArgs e)
        {
            windowsTaskbar.SetOverlayIcon(this.Handle, Properties.Resources.Alerta, "Alerta");
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            windowsTaskbar.SetOverlayIcon(this.Handle, Properties.Resources.Cerrar, "Cerrar");
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            windowsTaskbar.SetOverlayIcon(this.Handle, Properties.Resources.Agregar, "Agregar");
        }

        #endregion

        #region ThumbnailToolbarButton

        void CerrarSession_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Boton que fue presionado: LogOff..!!", "Titulo");
            this.Close();
        }
        void btnInfo_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Boton que fue presionado: Informacion..!!", "Titulo");
        }
        private void button1_Click(object sender, EventArgs e)
        {
            CerrarSession = new ThumbnailToolbarButton(Properties.Resources.LogOff, "Cerrar Sesion");
            btnInfo = new ThumbnailToolbarButton(Properties.Resources.Info, "Información");
            windowsTaskbar.ThumbnailToolbars.AddButtons(this.Handle, CerrarSession, btnInfo);

            CerrarSession.Click += new EventHandler<ThumbnailButtonClickedEventArgs>(CerrarSession_Click);
            btnInfo.Click += new EventHandler<ThumbnailButtonClickedEventArgs>(btnInfo_Click);
        }

        #endregion

        private void checkBoxPreviewClip_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBoxPreviewClip.Checked)
            {
                windowsTaskbar.TabbedThumbnail.SetThumbnailClip(this.Handle, new Rectangle(gbProgreso.Location, gbProgreso.Size));
            }
            else
            {
                windowsTaskbar.TabbedThumbnail.SetThumbnailClip(this.Handle, new Rectangle(0, 0, this.Width, this.Height));
            }
        }

        //Mostrar Notificador
        private void Form1_Load(object sender, EventArgs e)
        {
            this.Notificador.ShowBalloonTip(3000);
        }

        private void tbTrackProgresos_Scroll(object sender, EventArgs e)
        {
            pbProgreso.Value = 0;
            pbProgreso.Value = tbTrackProgresos.Value;
            windowsTaskbar.SetProgressValue(tbTrackProgresos.Value, 100);
        }

    }
}
Para Descargar la Demo completa pues dale click Aqui Recuerden descargar el CodePack de Windows 7 http://code.msdn.microsoft.com/WindowsAPICodePack

Espero que les guste y le sea de muchisima ayuda.



Tags: API - C# - Csharp - Desarrollo - Framework - net - net Framework - Tips - Trucos - Tutoriales - Visual Studio - WinForms - WPF


Te ha gustado este Post?


Pues seria genial si pudieras compartirlo con otras personas y asi llegarle a mas personas que pudiera ser util esta publicación. Animate a compartir

Compartir Compartir este Post Compartir este Post Compartir este Post Compartir este Post

Nombres:
Correo:
Página:
Comentario: