任务栏扩展

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

统一启动和切换

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

windows 7 任务栏

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

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

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

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

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

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

备注

快速启动文件夹 (FOLDERID _ QuickLaunch*) 仍然 可用于向后兼容性,尽管不再有 快速启动 UI。 但是,新应用程序不应要求在安装过程中向快速启动图标。

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

跳转列表

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

包含固定、频繁和任务类别的跳转列表

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

Destinations

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

启动目标与使用 Open With 命令启动 项非常 类似。 应用程序启动时,目标已加载并可供使用。 还可以将目标列表中的项从列表中拖动到删除目标,例如电子邮件。 通过使这些项集中到目标列表中,它可让用户更快地转到目标。

当项出现在目标列表的"最近访问"类别 (、"频繁"类别或自定义类别(如) 的稍后部分所述)中时,用户可能希望确保该项始终位于列表中以便快速访问。 为此,他/她可以将该项固定到列表,这会将该项添加到 "固定" 类别。 当用户主动处理目标时,他(她)需要它轻松地在手边操作,因此将其固定到应用程序的目标列表。 完成用户的工作后,他/她只需取消固定该项。 此用户控件使列表保持整洁且相关。

可以将目标列表视为"开始"菜单的应用程序 特定 版本。 目标列表不是快捷菜单。 可以右键单击目标列表中的每个项,以选择自己的快捷菜单。

API

任务

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

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

强烈建议任务列表是静态的。 无论应用程序的状态如何,它都应保持不变。 尽管可以动态改变列表,但应考虑这会使预期目标列表的该部分不会更改的用户混淆。

API

自定义跳转列表

应用程序可以定义自己的类别,并添加这些类别,并添加这些类别,或者将它们添加到应用程序中的标准"最近"和"频繁"跳转列表。 应用程序可以基于应用程序的体系结构和预期用途在这些自定义类别中控制自己的目标。 以下屏幕截图显示了具有"历史记录"跳转列表自定义属性。

自定义跳转列表

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

如果用户已从列表中删除了项(始终是用户选项),则应用程序必须遵守这一点。 应用程序还必须确保列表中的项有效,或者如果已删除,则这些项正常失败。 可以编程方式删除单个项或列表的全部内容。

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

API

缩略图工具栏

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

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

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

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

备注

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

API

图标覆盖

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

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

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

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

API

进度栏

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

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

API

Deskbands

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

API

通知区域

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

缩略图

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

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

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

备注

与 Vista Windows一样,为查看缩略图,因此,该 Vista 必须处于活动状态。

API

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

API

您可以选择要用作缩略图的窗口的特定区域。 当应用程序知道其文档或选项卡在缩略图大小的查看外观时,这会很有用。 然后,应用程序可以选择仅显示其客户端区域的一部分,用户可以使用它来区分缩略图。 但是,将鼠标悬停在任何缩略图上会显示其后面的整个窗口,使用户能够快速浏览这些窗口。

如果缩略图多于可显示的缩略图,则预览将恢复为旧版缩略图或标准图标。

API

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

任务栏

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

通知和通知区域