任务栏扩展

从 Windows 7 开始,任务栏已根据让用户尽可能快速高效地到达其位置的指导原则进行了显著扩展。 为此,用户需要完成的应用程序窗口、文件和命令现在集中到单个任务栏按钮中,该按钮合并了以前分散的信息源和控件。 用户现在可以在一个位置找到常见任务、最近和频繁的文件、警报、进度通知以及单个文档或选项卡的缩略图。

统一启动和切换

从 Windows 7 任务栏开始,“快速启动”不再是单独的工具栏。 快速启动通常包含的启动器快捷方式现在固定到任务栏本身,与当前正在运行的应用程序的按钮混为一体。 当用户从固定的启动器快捷方式启动应用程序时,只要应用程序正在运行,图标就会转换为应用程序的任务栏按钮。 当用户关闭应用程序时,按钮将还原为图标。 但是,启动器快捷方式和正在运行的应用程序的按钮只是 Windows 7 任务栏按钮的不同形式。

windows 7 任务栏

默认情况下,为新安装固定一小部分应用程序。 除此之外,只有用户才能固定更多应用程序;不允许应用程序以编程方式固定。

“快速启动”中的“显示桌面”功能现在位于任务栏的最右侧。 将鼠标悬停在此区域会导致所有活动窗口变为透明,并显示桌面。 单击该区域将执行熟悉的操作,即最小化所有窗口并切换到桌面。

应用程序运行时,其任务栏按钮将成为访问以下所有功能的单一位置,下面详细介绍了每项功能。

  • 任务:常见的应用程序命令,即使在应用程序未运行时也存在。
  • 目标:特定于应用程序的最近和经常访问的文件。
  • 缩略图:窗口切换,包括单个选项卡和文档的切换目标。
  • 缩略图工具栏:缩略图本身的基本应用程序控件。
  • 进度栏图标覆盖:状态通知。

任务栏按钮可以表示启动器、单个应用程序窗口或组。 AppUserModelID) 分配给每个组 (称为应用程序用户模型 ID 的标识符。 可以指定 AppUserModelID 来替代标准任务栏分组,从而允许窗口成为同一组的成员,否则它们可能不会被视为同一组的成员。 当鼠标悬停在组的任务栏按钮上时,在缩略图浮出控件中为组的每个成员提供单独的预览。 请注意,分组本身仍然是可选的。

从 Windows 7 开始,用户现在可以通过拖放操作重新排列任务栏按钮。

注意

FOLDERID_QuickLaunch) (“快速启动”文件夹仍可用于向后兼容,尽管不再存在快速启动 UI。 但是,新应用程序不应要求在安装过程中向“快速启动”添加图标。

 

有关详细信息,请参阅 应用程序用户模型 ID (AppUserModelIDs)

跳转列表

用户通常启动程序的目的是访问文档或在程序中执行任务。 游戏程序的用户可能想要进入保存的游戏或以特定角色身份启动,而不是从头开始重启游戏。 为了使用户更高效地实现其最终目标,与应用程序关联的 目标和 常见 任务 的列表将附加到该应用程序的任务栏按钮 (以及等效的 “开始” 菜单条目) 。 这是应用程序的跳转列表。 无论任务栏按钮是否处于启动器状态, (应用程序未) 运行,或者它是否表示一个或多个窗口,跳转列表都可用。 右键单击任务栏按钮会显示应用程序的跳转列表,如下图所示。

具有固定、频繁和任务类别的跳转列表

默认情况下,标准跳转列表包含两个类别:最近使用的项和固定的项,但由于 UI 中仅显示包含内容的类别,因此首次启动时不会显示这两个类别。 始终存在应用程序启动图标 (用于启动应用程序) 的更多实例、用于从任务栏固定或取消固定应用程序的选项,以及用于任何打开的窗口的 Close 命令。

Destinations

最近” 和“ 常用 ”类别被视为包含目标。 目标(通常是文件、文档或 URL)是可以编辑、浏览、查看等内容。 将目的地视为一个事物,而不是一个操作。 通常,目标是 Shell 命名空间中的项,由 IShellItemIShellLink 表示。 目标列表的这些部分类似于 “开始” 菜单最近使用的文档列表, (默认情况下不再显示) 和常用应用程序列表,但它们特定于应用程序,因此对用户更准确和有用。 目标列表中使用的结果是通过调用 SHAddToRecentDocs 计算的。 请注意,当用户从 Windows 资源管理器打开文件或使用通用文件对话框打开、保存或创建文件时,系统会自动为你调用 SHAddToRecentDocs ,这会导致许多应用程序在目标列表中获取其最近显示的项目,而无需对其执行任何操作。

启动目标与使用 “打开方式” 命令启动项非常类似。 应用程序启动时,该目标已加载并可供使用。 还可以将目标列表中的项目从列表中拖动到放置目标,例如电子邮件。 通过将这些项目集中到目标列表中,用户可以更快地到达所需位置,这就是目标。

当项目出现在目标列表的 “最近 ”类别 (或“ 频繁 ”类别或 自定义类别 中(如后面部分) 所述),用户可能需要确保该项始终位于列表中以便快速访问。 为此,他或她可以将该项固定到列表中,从而将项添加到 “固定 ”类别。 当用户正在积极处理某个目标时,他(她)想要轻松使用它,因此会将其固定到应用程序的目标列表。 完成该用户的工作后,他或她只需取消固定项。 此用户控件使列表保持整洁且相关。

可将目标列表视为特定于应用程序的 “开始 ”菜单版本。 目标列表不是快捷菜单。 可以右键单击目标列表中的每一项以获取其自己的快捷菜单。

API

任务

跳转列表的另一个内置部分是 “任务” 类别。 虽然目标是一个事物,但任务是一个操作,在这种情况下,它是特定于应用程序的操作。 换句话说,目标是名词,任务是动词。 通常,任务是具有命令行参数的 IShellLink 项,这些参数指示可由应用程序触发的特定功能。 同样,其思路是将与应用程序相关的尽可能多的信息集中到实际操作中。

应用程序根据程序的功能以及用户预期使用它们执行的关键事项来定义任务。 任务应该是无上下文的,应用程序不需要运行,它们就可以正常工作。 它们还应是普通用户在应用程序中执行的统计上最常见的操作,例如撰写电子邮件或在邮件程序中打开日历、在字处理器中创建新文档、以特定模式启动应用程序或启动其子命令之一。 应用程序不应使用标准用户不需要的高级功能或一次性操作(如注册)使菜单混乱。 请勿将任务用于升级或特价等促销项目。

强烈建议任务列表是静态的。 无论应用程序的状态或状态如何,它都应保持不变。 虽然可以动态改变列表,但应考虑这可能会使不希望目标列表的该部分更改的用户感到困惑。

API

自定义跳转列表

应用程序可以定义自己的类别,并在跳转列表中添加或取代标准“ 最近” 和“ 常用 ”类别。 应用程序可以根据应用程序的体系结构和预期用途,在这些自定义类别中控制自己的目标。 以下屏幕截图显示了具有“历史记录”类别的自定义跳转列表。

自定义跳转列表

如果应用程序决定提供自定义类别,该应用程序将负责填充该类别。 类别内容应仍特定于用户且基于用户历史记录和/或操作,但应用程序可以通过自定义类别确定要跟踪的内容和要忽略的内容,可能基于应用程序选项。 例如,音频程序可能会选择仅包含最近播放的专辑,并忽略最近播放的单个曲目。

如果用户从列表中删除了项(始终是用户选项),则应用程序必须遵循该选项。 应用程序还必须确保列表中的项有效,或者如果这些项已被删除,则它们会正常失败。 可以编程方式删除列表的各个项或整个内容。

目标列表中的最大项目数由系统根据各种因素(如显示分辨率和字号)确定。 如果没有足够的空间容纳所有类别中的所有项,则它们将从下到上截断。

API

缩略图工具栏

若要在不让用户还原或激活应用程序窗口的情况下提供对特定窗口关键命令的访问权限,可以在该窗口的缩略图预览中嵌入活动工具栏控件。 例如,Windows 媒体播放器可能会提供标准媒体传输控件,例如播放、暂停、静音和停止。 UI 在缩略图正下方显示此工具栏,如下图所示,它不覆盖其任何部分。

Windows 媒体播放器的缩略图任务栏,有三个按钮:后退、播放和前进

此工具栏只是熟悉的标准工具栏通用控件。 它最多有 7 个按钮。 每个按钮的 ID、图像、工具提示和状态在 结构中定义,然后传递给任务栏。 应用程序可以根据当前状态的要求,在缩略图工具栏中显示、启用、禁用或隐藏按钮。

由于显示缩略图的空间有限,并且要显示的缩略图数量不定,因此不能保证应用程序具有给定的工具栏大小。 如果空间受到限制,工具栏中的按钮将从右到左截断。 因此,在设计工具栏时,应确定与按钮关联的命令的优先级,并确保最重要的命令排在第一位,并且不太可能因为空间问题而被删除。

注意

当应用程序显示窗口时,系统会创建其任务栏按钮。 按钮就位后,任务栏会向窗口发送 TaskbarButtonCreated 消息。 其值是通过调用 RegisterWindowMessage (L (“TaskbarButtonCreated”) ) 计算的。 应用程序必须在调用任何 ITaskbarList3 方法之前接收该消息。

 

API

图标覆盖

应用程序可以通过其任务栏按钮向用户传达某些通知和状态,方法是在按钮上显示小覆盖层。 这些覆盖类似于用于快捷方式或安全通知的现有覆盖的类型,显示在按钮的右下角。 若要显示覆盖图标,任务栏必须处于默认的大图标模式,如以下屏幕截图所示。

带有覆盖的 windows messenger 任务栏按钮,用于指示可用状态

图标覆盖充当状态的上下文通知,旨在无需单独的通知区域状态图标向用户传达该信息。 例如,Microsoft Outlook 中当前显示在通知区域中的新邮件状态现在可以通过任务栏按钮上的覆盖来指示。 同样,必须在开发周期中决定哪种方法最适合应用程序。 覆盖图标旨在提供重要的长期状态或通知,例如网络状态、信使状态或新邮件。 不应向用户呈现不断变化的覆盖层或动画。

由于单个覆盖层叠加在任务栏按钮上,而不是单个窗口缩略图上,因此这是按组而不是每个窗口的功能。 可以从任务栏组中的各个窗口接收覆盖图标请求,但它们不会排队。 收到的最后一个覆盖是显示的覆盖。

API

进度栏

任务栏按钮可用于显示进度栏。 这使窗口能够向用户提供进度信息,而无需该用户切换到窗口本身。 用户可以在另一个应用程序中保持高效工作,同时一目了然地看到其他窗口中发生的一个或多个操作的进度。 任务栏按钮中的进度栏旨在反映窗口本身中更详细的进度指示器。 此功能可用于跟踪文件复制、下载、安装、媒体刻录或任何需要一段时间的操作。 此功能不适用于通常的外围操作,例如网页加载或文档打印。 该类型的进度应继续显示在窗口的状态栏中。

任务栏按钮进度栏的体验类似于熟悉的进度栏控件。 它可以显示基于操作完成百分比的确定进度,也可以显示不确定的选框样式进度,以指示操作正在进行中,而没有任何剩余时间预测。 它还可能表明操作已暂停或遇到错误,需要用户干预。

API

Deskbands

在 Windows 7 之前的 Windows 版本中,可以通过桌面带(任务栏中托管的工具栏)实现类似于缩略图工具栏功能的功能。 例如,Windows 媒体播放器可以将任务栏最小化为一组传输控件,而不是一个标准按钮。 在 Windows 7 中,仍可实现桌面带,缩略图工具栏并不打算全部替换它们。 并非所有应用程序都可以使用缩略图工具栏,其他解决方案(如桌面带或目标列表中的任务)可能是应用程序的正确答案;在开发周期中,必须确定哪种解决方案最适合应用程序。 但请注意,桌面带必须支持已启用半透明 (“玻璃”) 和 IDeskBand2 接口的 Windows Aero。

API

通知区域

通知区域已发生更改,使用户能够更好地控制任务栏上显示哪些图标。 所有通知图标现在默认处于隐藏状态,并且无法以编程方式控制可见性。 仅允许用户选择任务栏上显示的通知图标。 显示通知气球时,图标将暂时可见,但即使这样,用户也可以选择将其静音。 因此,当希望应用程序向用户传达该信息时,任务栏按钮上的图标覆盖将成为一个有吸引力的选择。

缩略图

在 Windows Vista 中,将鼠标悬停在应用程序的任务栏按钮上会显示表示正在运行的窗口的缩略图。 如果任务栏折叠了应用程序的窗口,则缩略图通过显示为堆栈来表示此内容,但缩略图本身中仅显示活动窗口。

在 Windows 7 中,组的每个成员都显示为单独的缩略图,现在也是切换目标。 应用程序可以定义其子窗口 (,例如真正的子窗口、单个文档或选项卡) ,并为每个窗口提供相应的缩略图,即使它们通常不会显示在任务栏中也是如此。 这使用户能够直接切换到所需的应用程序视图,而不是切换到应用程序,然后切换到其目标。 例如,多文档界面 (MDI) /tabbed-document 接口 (TDI) 应用程序可以将每个文档或选项卡显示为单独的缩略图,并在鼠标悬停在组的任务栏按钮上时切换目标。

三个任务栏缩略图,表示 Windows Internet Explorer 中的单个选项卡

注意

与在 Windows Vista 中一样,Aero 必须处于活动状态才能查看缩略图。

 

API

窗口的缩略图表示形式通常是自动的,但在结果不是最佳的情况下,可以显式指定缩略图。 默认情况下,只有顶级窗口会为它们自动生成缩略图,子窗口的缩略图显示为通用表示形式。 这可能会导致不理想的 (,甚至混淆最终用户) 体验。 例如,每个子窗口的特定开关目标缩略图可提供更好的用户体验。

API

你可以选择要用作缩略图的窗口的特定区域。 当应用程序知道其文档或选项卡在以缩略图大小查看时显示相似时,这非常有用。 然后,应用程序可以选择只显示用户可用于区分缩略图的工作区部分。 但是,将鼠标悬停在任何缩略图上会显示其后面的全屏视图,以便用户也可以快速浏览它们。

如果缩略图多于可显示的缩略图,预览将还原为旧缩略图或标准图标。

API

若要将 “固定到任务栏 ”添加到项的快捷菜单(通常只有包含 IsShortCut 条目的文件类型需要),可以通过注册相应的上下文菜单处理程序来完成。 这也适用于 固定到“开始”菜单。 有关详细信息 ,请参阅注册 Shell 扩展处理程序

任务栏

应用程序用户模型 ID (AppUserModelIDs)

通知和通知区域