任务栏自定义¶
概述¶
Electron 提供了用于在 Windows 任务栏中配置应用图标的 API。该 API 既支持仅限 Windows 的功能,例如创建 JumpList、自定义缩略图和工具栏、图标叠加以及所谓的“闪烁框架”效果,也支持跨平台功能,例如最近文档和应用程序进度。
JumpList¶
Windows 允许应用定义在用户右键单击任务栏中的应用图标时显示的自定义上下文菜单。该上下文菜单称为 JumpList。正如 MSDN 所述,你可以在 JumpList 的 Tasks 类别中指定自定义操作:
应用程序根据程序的功能以及用户预期会用它们执行的关键操作来定义任务。任务应与上下文无关,即应用程序无需运行即可完成这些任务。任务还应该是普通用户在应用程序中最常执行的操作,例如撰写电子邮件、在邮件程序中打开日历、在文字处理器中创建新文档、以特定模式启动应用程序或启动其某个子命令。应用程序不应使用普通用户不需要的高级功能或一次性操作(如注册)来使菜单变得杂乱。不要将任务用于促销项目,例如升级或特别优惠。
强烈建议任务列表保持静态。无论应用程序的状态或状况如何,任务列表都应保持不变。虽然可以动态更改列表,但你应该考虑到,这可能会让那些不希望目标列表该部分发生变化的用户感到困惑。

注意:上面的截图是 Microsoft Edge 的常规任务示例
与 macOS 中作为真实菜单的 dock 菜单不同,Windows 中的用户任务类似于应用程序快捷方式。例如,当用户单击某个任务时,程序将使用指定的参数执行。
要为你的应用程序设置用户任务,可以使用 app.setUserTasks API。
示例¶
设置用户任务¶
从教程入门代码中的可用应用程序开始,使用以下代码行更新 main.js 文件:
const { app } = require('electron')
app.setUserTasks([
{
program: process.execPath,
arguments: '--new-window',
iconPath: process.execPath,
iconIndex: 0,
title: 'New Window',
description: 'Create a new window'
}
])
清除任务列表¶
要清除任务列表,你需要在 main.js 文件中调用 app.setUserTasks 并传入空数组。
注意:即使关闭应用程序后,用户任务仍会显示,因此为任务指定的图标和程序路径应一直存在,直到应用程序被卸载。
缩略图工具栏¶
在 Windows 上,你可以向应用程序窗口的任务栏布局添加带有指定按钮的缩略图工具栏。它为用户提供了一种无需还原或激活窗口即可访问特定窗口命令的方式。
正如 MSDN 所述:
该工具栏就是熟悉的通用标准工具栏控件。它最多包含七个按钮。每个按钮的 ID、图像、工具提示和状态都在一个结构中定义,然后传递给任务栏。应用程序可以根据其当前状态显示、启用、禁用或隐藏缩略图工具栏中的按钮。
例如,Windows Media Player 可能会提供标准的媒体传输控件,例如播放、暂停、静音和停止。
![]()
注意:上面的截图是 Windows Media Player 的缩略图工具栏示例
要在应用程序中设置缩略图工具栏,你需要使用 BrowserWindow.setThumbarButtons
示例¶
设置缩略图工具栏¶
从教程入门代码中的可用应用程序开始,使用以下代码行更新 main.js 文件:
const { BrowserWindow, nativeImage } = require('electron')
const path = require('node:path')
const win = new BrowserWindow()
win.setThumbarButtons([
{
tooltip: 'button1',
icon: nativeImage.createFromPath(path.join(__dirname, 'button1.png')),
click () { console.log('button1 clicked') }
}, {
tooltip: 'button2',
icon: nativeImage.createFromPath(path.join(__dirname, 'button2.png')),
flags: ['enabled', 'dismissonclick'],
click () { console.log('button2 clicked.') }
}
])
清除缩略图工具栏¶
要清除缩略图工具栏按钮,你需要在 main.js 文件中调用 BrowserWindow.setThumbarButtons 并传入空数组。
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
win.setThumbarButtons([])
任务栏中的图标叠加¶
在 Windows 上,任务栏按钮可以使用小图标叠加来显示应用程序状态。
正如 MSDN 所述:
图标叠加用作状态的情境通知,旨在免除通过单独的通知区域状态图标向用户传达该信息的需要。例如,Microsoft Outlook 中的新邮件状态目前显示在通知区域中,现在可以通过任务栏按钮上的叠加图标来指示。同样,你必须在开发周期内决定哪种方法最适合你的应用程序。叠加图标旨在提供重要的、长期的状态或通知,例如网络状态、即时通讯状态或新邮件。不应向用户呈现不断变化的叠加图标或动画。
![]()
注意:上面的截图是任务栏按钮上覆盖图标的示例。
要为窗口设置覆盖图标,需要使用 BrowserWindow.setOverlayIcon API。
示例¶
从 教程示例代码 中的可运行应用程序开始,使用以下行更新 main.js 文件:
const { BrowserWindow, nativeImage } = require('electron')
const win = new BrowserWindow()
win.setOverlayIcon(nativeImage.createFromPath('path/to/overlay.png'), 'Description for overlay')
闪烁窗口¶
在 Windows 上,你可以高亮显示任务栏按钮以引起用户注意。 这与 macOS 中弹跳 Dock 图标类似。
引用自 MSDN:
通常,窗口会闪烁,以告知用户该窗口需要 关注,但它当前没有键盘焦点。
要闪烁 BrowserWindow 的任务栏按钮,需要使用 BrowserWindow.flashFrame API。
示例¶
从 教程示例代码 中的可运行应用程序开始,使用以下行更新 main.js 文件:
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
win.once('focus', () => win.flashFrame(false))
win.flashFrame(true)
注意:别忘了调用
win.flashFrame(false)以关闭闪烁。 在上面的示例中,它在窗口获得焦点时被调用, 但你也可以使用超时或其他事件来禁用它。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron