Taskbar Advanced Features integration in Windows 7


We also discussed in depth the design considerations and application programming interfaces (APIs) for programming application IDs, taskbar overlay icons, and progress bars. In this article, we’ll examine the more advanced features of the Windows 7 taskbar:

In our discussion of these features, we’ll again look at the design considerations pertinent to integrating an application with the Windows 7 taskbar and the Windows 7 user experience guidelines, and we’ll look at the native and managed APIs that make this integration possible.

Jump Lists

The Windows Vista Start menu revolutionized the accessibility of applications and documents by giving us the amazing search box, which can enhance productivity in countless ways. However, in spite of these improvements, the Start menu which is a global, system-wide location can’t provide us with access to tasks and documents that are specific to a single application. When the application is running, the Start menu can display a menu or surface common tasks in its notification area icon but when the application is not running, the only thing the user can do is start the application up.

With the consolidation and revolution of launch surfaces that is integral to the Windows 7 desktop, every application now has a Start menu. This Start menu, known as the Jump List, gives every application a place for categorized destinations and tasks that are specific to that application. Windows 7 desktop has two manifestations of the Jump List: one is part of the traditional Start menu, and another is a popup menu from the application’s taskbar button.

Anatomy of a Jump List

The following screen shot depicts the typical Jump List of a Windows 7 application, shown after right-clicking the application’s taskbar button. It’s divided into three functionally different areas, which we’ll review from the bottom of the screen shot to the top:

Windows 7 Taskbar

Taskbar tasks: The three items on the bottom of the menu are the taskbar tasks, which are present in the Jump List of every application, even if it has absolutely no integration with the Windows 7 taskbar. The first task (from the top) allows you to launch the application or launch another instance of it if it’s already running. The second task allows you to pin the application to the taskbar (which means its taskbar button will be shown even if the application isn’t running) or unpin it from the taskbar if it is already pinned. Finally, the third task allows you to close the application’s window (but only if it is already running).

User tasks: The section above the taskbar tasks in the menu contains user tasks, which might contain additional separators to group related tasks together. Despite their name, it is the application not the user that populates the Jump List with these tasks. Typical tasks are shortcuts to additional functionality that is related to the application and that can be used even if the application is not currently running (in contrast to thumbnail toolbars, which are displayed only when the application is running). For example, Windows Media Player provides the Resume Previous List and Play All Music user tasks. The application in the screen shot provides the Launch Notepad and Launch Calculator user tasks. User tasks are phrased as verbs that are related to the application.

Categorized destinations: The topmost section in the menu contains categorized destinations, which are usually documents the application can handle and open. Destinations are nouns, and users usually expect them to open in the same application. (Even if the application does not have a well-defined file type or is not the primary handler for a specific file type, virtual destinations in the application’s Jump List might still redirect the user to specific functionality.) The system provides applications with the Recent and Frequent categories although it usually makes sense to include only one of them in the Jump List. However, applications might add more categories of destinations to the Jump List for example, an e-mail application might have Inbox and Follow-up categories, a Web browser might have a Favorites category, and so on. Finally, the system also provides a Pinned category, which contains items explicitly pinned by the user. These items cannot be programmatically controlled, and it’s up to the user’s discretion what gets pinned here. (Users can pin an item by right-clicking on the destination once the jump list is open.)

Applications control the contents of the Jump List using the COM ITaskbarList3 interface (implemented by the Windows 7 taskbar and obtained by co-creating the CLSID_TaskbarList COM object), which can be used as soon as the application’s taskbar button is created. The managed equivalent of ITaskbarList3 is the TaskbarManager class in the Windows API Code Pack.

More Info The Windows API Code Pack is an open-source managed library for interacting with the new Windows 7 features. It is not an official part of the .NET Framework, but it will give you a head start with your managed applications on Windows 7. It can be downloaded for free from http://code.msdn.microsoft.com/WindowsAPICodePack, where you’ll always find the latest version. The Windows API Code Pack was still under development while this article was written; this means that some APIs covered in the article might have changed in the final release of the library.

Legal Disclaimer

Our website is not responsible for the information contained by this article. Articleinput.com is a free articles resource thus practically any visitor can submit an article. However if you notice any copyrighted material, please contact us and we will remove the article(s) in discussion right away.

Note: This article was sent to us by: Michael Donovan at 01282010

Related Articles

1. Why is Linux such an incredible piece of sowtware
Embedded Linux Linux is an incredible piece of software. It’s an operating system that’s just as at home running on IBM’s zSeries supercompute...

2. Explanation of the Embedded Linux development process
Embedded Linux is a topic with many interdependencies; this article lays out the big points and purposely lacks detail so you can see the big picture without getting dist...

3. Basics to understanding the structure of an embedded Linux system
Anatomy of an Embedded Linux System At runtime, an embedded Linux system contains the following software components: • Boot loader: What gets the ope...

4. The resemblance between the GCC compiler and the kernel in Linux
The GNU Compiler Collection The GCC compiler, like the kernel, is designed for portability. Like all open source programs, GCC is available in source form, and ...

5. Automake and Autoconf discover the state of the target environment
Automake/Autoconf Open source software is designed to be distributed in source code form so that it can be compiled for the target platform. When target platfor...

6. How and where does a software developer get help
Where to Get Help All software developers depend on little helpers, whether visible or invisible. Open Source developers tend to call upon a large number of res...

7. Necessary additional steps to get Linux running
Host Services After the software is installed, some additional configuration steps are necessary to get the packages in running order. This part goes through co...

8. Virtualization and the computer resource sharing
Target Emulation and Virtual Machines Virtualization is a mature technology that lets several operating systems share the physical resources of a machine, such ...

9. Development of hosting code and use of virtualization software
Virtualization Software for x86 Hosts If you're developing code for an x86 host, why bother using virtualization? The host and target are identical, so using vi...