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:
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:
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:
4. Dibujaremos una pantalla como esta:
5. Agregan estas referencias al proyecto:
6. Luego agregamos los iconos de su preferencia al archivo de Recurso:
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