Windows 7: Taskbar

Una de las características más novedosas de Windows 7 es la nueva Taskbar. Es una evolución del concepto de Taskbar que teníamos en las versiones previas de Windows pero que ahora se ha renovado. Veremos cuáles son esas características y cómo podemos aprovecharlas para nuestras aplicaciones.

Aquí podemos ver una captura de pantalla de las nueva Taskbar que viene con Windows 7:

image

Podemos observar que ahora la barra de acceso rápido (Quick Launch) ha desaparecido, y ahora en su lugar la barra de tareas es como una especie de mezcla entre ambos, pues como podemos observar tenernos en la Taskbar programas ejecutándose y programas que no se están ejecutando, además también podemos ver como algunos de los elementos tiene varias ventanas y están se agrupan (en el ejemplo podemos ver a Microsoft PowerPoint).

Con respecto a la agrupación ¿Cómo Windows 7 sabe que una ventana corresponde a un mismo programa, proceso o las tiene que agrupar?. Ahora las aplicaciones tiene un Application Id, que representa el identificador de la ventana para que la Taskbar sepa si tiene que agrupar o no, eso permite que dos ventanas del mismo proceso aparezcan virtualmente como dos aplicaciones diferentes y justo al revés, es decir, que dos ventanas de procesos diferentes aparezcan agrupadas. Esta propiedad es un string y está limitado a 128 caracteres.

Los programas actuales no están programados utilizando las características de Windows 7, así que como sabe el sistema como agrupar las ventanas, en principio utiliza en nombre del proceso.

Podemos tener varios tipos de procesos especiales en los que se tiene que tener en cuenta el nombre de la Taskbar:

· Varios ejecutable, la misma aplicación

· El mismo ejecutable (host), varias aplicaciones.

Ejemplos de estos, tenemos por ejemplo, el proceso de host de Visual Studio (vshost.exe) que es el host de una aplicación que depuramos dentro de VS con lo que en la Taskbar aparecerá el programa como vshost y no como el nombre de nuestro ejecutable. El otro ejemplo lo tenemos en Internet Explorer que ahora dentro del mismo proceso, tenemos diferentes ventanas y queremos que aparezcan como procesos diferentes dentro de la Taskbar.

Esta es la función que tenemos que llamar para poder establecer el nombre de todas las ventanas:

#include <windows.h>
#pragma comment (lib, "shell32.lib")
SetCurrentProcessExplicitAppUserModelId(L"Microsoft.Samples.AppId1");

Y si queremos específicamente establecer el Application Id para una ventana en concreto tenemos que hacer esto:

PROPVARIANT pv;
InitPropVariantFromString(L"Microsoft.Samples.AppId2", &pv);
IPropertyStore *pps;
HRESULT hr = SHGetPropertyStoreForWindow(hWnd, IID_PPV_ARGS(&pps));
pps->SetValue(PKEY_AppUserModel_ID, pv);

JumpList

Una de las nuevas características de la Taskbar es la inclusión de las JumpList en los menus contextuales de las aplicaciones que tenemos en la barra.

image

Aquí podemos ver una captura de esa característica, que nos permite ver una lista de los elementos recientes que hemos usado con ese programa. Ahora simplemente para abrir uno de esos ficheros tenemos que hacer clic sobre el icono y automáticamente se abrirá el fichero correspondiente.

Esta lista es generada a partir de varios orígenes, una de ellas es las lista de ficheros abiertos desde el explorador de Windows, lo que vienen a ser los últimos ficheros abiertos. Además, si dentro de nuestra aplicación usamos el Common File Dialog para abrir ficheros automáticamente el fichero abierto se añadirá a la lista de nuestro usuario. Además de eso disponemos de una API que nos permite acceder a los elementos de la lista y configurarlo a nuestra manera.

Además de lo que son archivos recientemente usados por nuestra aplicación también podemos insertar tareas dentro de los JumpList. Las tareas son comandos que desde la TaskBar se pueden invocar para nuestra aplicación y el usuario se puede comunicar con nuestra aplicación de una manera normalizada.

Aquí podemos ver un diagrama de las diferentes opciones de los JumpList.

image

En el que podemos observar varios grupos. Abajo del todo tenemos las tareas de la TaskBar, Cerrar Ventana, Despinear esta aplicación de la taskbar y lanzar de nuevo otra instancia de la aplicación. Encima tenemos, tareas definidas por el desarrollador de la aplicación. Un ejemplo de estas tareas pueden ser las tareas del Windows Media Player que incluye una tarea de reproducir toda la música mezclada y otra que es resumir la última lista reproducida. Esta última acción no siempre está disponible porque tenemos que haber reproducido una lista previamente para que nos aparezca esta tarea.

Además de eso también podemos tener otra serie de acciones disponibles para el usuario, que representan acciones previamente hechas en la aplicación. Siguiendo el ejemplo del Windows Media Player, podemos ver que tenemos una serie de acciones como reproducir el resultado de la búsqueda de música “The Pianist”, reproducir toda la música, reproducir todo el vídeo, reproducir la lista “RockBand”, reproducir el artista “The Alan Parsons Project” y ColdPlay y Pink Floyd. Toda esta lista son las acciones pineadas (Pinned) es decir acciones que el usuario (yo, en este caso) quiere tener disponibles para su aplicación.

image

Si ponemos como ejemplo otra aplicación como por ejemplo una aplicación para administrar la facturación de una empresa, podemos tener disponibles las últimas facturas a las que el usuario ha accedido en la aplicación, permitiendo así al usuario poder acceder y pinear las facturas más importantes de la aplicación.

Esta última parte es muy importante pues permite que las aplicaciones se integren perfectamente con la nueva Taskbar explotando toda la potencia de la nueva Experiencia de Usuario de Windows 7.

En el próximo artículo veremos cómo podemos acceder a toda esta información desde código, tanto nativo como administrado.

3 comentarios en “Windows 7: Taskbar”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *