Windows 7 APIs: Trabajando con el TaskBar (Csharp)
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.
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 |
|
|
|
|
Deja tu Comentario




![Validate my RSS feed [Valid RSS]](http://validator.w3.org/feed/images/valid-rss-rogers.png)

