跳至主要内容

app

控制应用程序的事件生命周期。

进程:主进程

以下示例演示了如何在最后一个窗口关闭时退出应用程序

const { app } = require('electron')
app.on('window-all-closed', () => {
app.quit()
})

事件

app 对象发出以下事件

事件:'will-finish-launching'

当应用程序完成基本启动时发出。在 Windows 和 Linux 上,will-finish-launching 事件与 ready 事件相同;在 macOS 上,此事件表示 NSApplicationapplicationWillFinishLaunching 通知。

在大多数情况下,您应该在 ready 事件处理程序中执行所有操作。

事件:'ready'

返回值

Electron 完成初始化后发出一次。在 macOS 上,launchInfo 包含用于打开应用程序的 NSUserNotificationuserInfo 或来自 UNNotificationResponse 的信息(如果它是从通知中心启动的)。您还可以调用 app.isReady() 来检查此事件是否已经触发,以及 app.whenReady() 来获取 Electron 初始化时完成的 Promise。

注意ready 事件仅在主进程完成事件循环的第一个 Tick 后才会触发。如果在 ready 事件之前需要调用 Electron API,请确保在主进程的顶级上下文中同步调用它。

事件:'window-all-closed'

所有窗口都关闭时发出。

如果您没有订阅此事件并且所有窗口都已关闭,则默认行为是退出应用程序;但是,如果您订阅了,则可以控制应用程序是否退出。如果用户按下 Cmd + Q 或开发人员调用 app.quit(),Electron 将首先尝试关闭所有窗口,然后发出 will-quit 事件,在这种情况下,不会发出 window-all-closed 事件。

事件:'before-quit'

返回值

  • event 事件

应用程序开始关闭其窗口之前发出。调用 event.preventDefault() 将阻止默认行为,即终止应用程序。

注意:如果应用程序退出是由 autoUpdater.quitAndInstall() 发起的,则在对所有窗口发出 close 事件并关闭它们之后发出 before-quit

注意:在 Windows 上,如果应用程序由于系统关机/重启或用户注销而关闭,则不会发出此事件。

事件:'will-quit'

返回值

  • event 事件

所有窗口都关闭并且应用程序将退出时发出。调用 event.preventDefault() 将阻止默认行为,即终止应用程序。

有关 will-quitwindow-all-closed 事件之间的差异,请参阅 window-all-closed 事件的说明。

注意:在 Windows 上,如果应用程序由于系统关机/重启或用户注销而关闭,则不会发出此事件。

事件:'quit'

返回值

  • event 事件
  • exitCode 整数

应用程序退出时发出。

注意:在 Windows 上,如果应用程序由于系统关机/重启或用户注销而关闭,则不会发出此事件。

事件:'open-file' macOS

返回值

  • event 事件
  • path 字符串

当用户想要使用应用程序打开文件时发出。当应用程序已打开并且操作系统想要重用应用程序来打开文件时,通常会发出 open-file 事件。当文件被拖放到停靠栏并且应用程序尚未运行时,也会发出 open-file。确保在应用程序启动的早期(甚至在发出 ready 事件之前)侦听 open-file 事件以处理这种情况。

如果您想处理此事件,则应调用 event.preventDefault()

在 Windows 上,您必须解析 process.argv(在主进程中)以获取文件路径。

事件:'open-url' macOS

返回值

  • event 事件
  • url 字符串

当用户想要使用应用程序打开 URL 时发出。您的应用程序的 Info.plist 文件必须在 CFBundleURLTypes 键中定义 URL 方案,并将 NSPrincipalClass 设置为 AtomApplication

open-file 事件一样,请务必在应用程序启动的早期注册 open-url 事件的侦听器,以检测应用程序是否正在打开以处理 URL。如果您在响应 ready 事件时注册侦听器,则会错过触发应用程序启动的 URL。

事件:'activate' macOS

返回值

  • event 事件
  • hasVisibleWindows 布尔值

应用程序激活时发出。各种操作都可以触发此事件,例如首次启动应用程序、在应用程序已运行时尝试重新启动应用程序,或单击应用程序的停靠栏或任务栏图标。

事件:'did-become-active' macOS

返回值

  • event 事件

应用程序变为活动状态时发出。这与 activate 事件的不同之处在于,did-become-active 每次应用程序变为活动状态时都会发出,而不仅仅是在单击停靠栏图标或重新启动应用程序时发出。当用户通过 macOS 应用程序切换器切换到应用程序时,也会发出它。

事件:'did-resign-active' macOS

返回值

  • event 事件

应用程序不再处于活动状态且没有焦点时发出。例如,可以通过单击另一个应用程序或使用 macOS 应用程序切换器切换到另一个应用程序来触发此操作。

事件:'continue-activity' macOS

返回值

  • event 事件
  • type 字符串 - 用于识别活动的字符串。映射到 NSUserActivity.activityType
  • userInfo 未知 - 包含活动在另一台设备上存储的特定于应用程序的状态。
  • details 对象
    • webpageURL 字符串(可选) - 用于识别活动在另一台设备上访问的网页的 URL 的字符串(如果可用)。

Handoff 期间发出,当来自不同设备的活动想要恢复时。如果您想处理此事件,则应调用 event.preventDefault()

用户活动只能在与活动的源应用程序具有相同开发者团队 ID 且支持活动的类型的应用程序中继续。支持的活动类型在应用程序的 Info.plist 中的 NSUserActivityTypes 键下指定。

事件:'will-continue-activity' macOS

返回值

Handoff 期间发出,在来自不同设备的活动想要恢复之前。如果您想处理此事件,则应调用 event.preventDefault()

事件:'continue-activity-error' macOS

返回值

  • event 事件
  • type 字符串 - 用于识别活动的字符串。映射到 NSUserActivity.activityType
  • error 字符串 - 包含错误的本地化描述的字符串。

Handoff 期间发出,当来自不同设备的活动无法恢复时。

事件:'activity-was-continued' macOS

返回值

  • event 事件
  • type 字符串 - 用于识别活动的字符串。映射到 NSUserActivity.activityType
  • userInfo 未知 - 包含活动存储的特定于应用程序的状态。

Handoff 期间发出,在来自此设备的活动已成功在另一个设备上恢复之后。

事件: 'update-activity-state' macOS

返回值

  • event 事件
  • type 字符串 - 用于识别活动的字符串。映射到 NSUserActivity.activityType
  • userInfo 未知 - 包含活动存储的特定于应用程序的状态。

Handoff即将在另一个设备上恢复时发出。如果您需要更新要传输的状态,则应立即调用event.preventDefault(),构造一个新的userInfo字典并及时调用app.updateCurrentActivity()。否则,操作将失败,并将调用continue-activity-error

事件: 'new-window-for-tab' macOS

返回值

  • event 事件

当用户点击原生 macOS 新标签按钮时发出。只有当当前的BrowserWindow具有tabbingIdentifier时,新标签按钮才会可见。

事件: 'browser-window-blur'

返回值

当一个browserWindow失去焦点时发出。

事件: 'browser-window-focus'

返回值

当一个browserWindow获得焦点时发出。

事件: 'browser-window-created'

返回值

当一个新的browserWindow被创建时发出。

事件: 'web-contents-created'

返回值

当一个新的webContents被创建时发出。

事件: 'certificate-error'

返回值

  • event 事件
  • webContents WebContents
  • url 字符串
  • error 字符串 - 错误代码
  • certificate Certificate
  • callback 函数
    • isTrusted 布尔值 - 是否将证书视为受信任的
  • isMainFrame 布尔值

当无法验证urlcertificate时发出,要信任证书,您应该使用event.preventDefault()阻止默认行为并调用callback(true)

const { app } = require('electron')

app.on('certificate-error', (event, webContents, url, error, certificate, callback) => {
if (url === 'https://github.com') {
// Verification logic.
event.preventDefault()
callback(true)
} else {
callback(false)
}
})

事件: 'select-client-certificate'

返回值

当请求客户端证书时发出。

url对应于请求客户端证书的导航条目,并且callback可以使用从列表中过滤出的条目进行调用。使用event.preventDefault()可以防止应用程序使用存储中的第一个证书。

const { app } = require('electron')

app.on('select-client-certificate', (event, webContents, url, list, callback) => {
event.preventDefault()
callback(list[0])
})

事件: 'login'

返回值

  • event 事件
  • webContents WebContents (可选)
  • authenticationResponseDetails 对象
    • url URL
    • pid 数字
  • authInfo 对象
    • isProxy 布尔值
    • scheme 字符串
    • host 字符串
    • port 整数
    • realm 字符串
  • callback 函数
    • username 字符串 (可选)
    • password 字符串 (可选)

webContents实用程序进程想要执行基本身份验证时发出。

默认行为是取消所有身份验证。要覆盖此行为,您应该使用event.preventDefault()阻止默认行为,并使用凭据调用callback(username, password)

const { app } = require('electron')

app.on('login', (event, webContents, details, authInfo, callback) => {
event.preventDefault()
callback('username', 'secret')
})

如果在没有用户名或密码的情况下调用callback,则身份验证请求将被取消,并且身份验证错误将返回到页面。

事件: 'gpu-info-update'

每当GPU信息更新时发出。

事件: 'render-process-gone'

返回值

当渲染器进程意外消失时发出。这通常是由于它崩溃或被杀死。

事件: 'child-process-gone'

返回值

  • event 事件
  • details 对象
    • type 字符串 - 进程类型。以下值之一
      • 实用程序
      • Zygote
      • 沙盒助手
      • GPU
      • Pepper 插件
      • Pepper 插件代理
      • 未知
    • reason 字符串 - 子进程消失的原因。可能的值
      • clean-exit - 进程以退出代码0退出
      • abnormal-exit - 进程以非零退出代码退出
      • killed - 进程收到 SIGTERM 或以其他方式被外部杀死
      • crashed - 进程崩溃
      • oom - 进程内存不足
      • launch-failed - 进程从未成功启动
      • integrity-failure - Windows 代码完整性检查失败
    • exitCode 数字 - 进程的退出代码(例如,如果在 posix 上,则来自 waitpid 的状态,如果在 Windows 上,则来自 GetExitCodeProcess)。
    • serviceName 字符串 (可选) - 进程的非本地化名称。
    • name 字符串 (可选) - 进程的名称。实用程序的示例:音频服务内容解密模块服务网络服务视频捕获等。

当子进程意外消失时发出。这通常是由于它崩溃或被杀死。它不包括渲染器进程。

事件: 'accessibility-support-changed' macOS Windows

返回值

  • event 事件
  • accessibilitySupportEnabled 布尔值 - 当 Chrome 的辅助功能支持启用时为 true,否则为 false

当 Chrome 的辅助功能支持发生变化时发出。当启用或禁用辅助技术(如屏幕阅读器)时,此事件会触发。有关更多详细信息,请参阅https://www.chromium.org/developers/design-documents/accessibility

事件: 'session-created'

返回值

当 Electron 创建了一个新的session时发出。

const { app } = require('electron')

app.on('session-created', (session) => {
console.log(session)
})

事件: 'second-instance'

返回值

  • event 事件
  • argv 字符串[] - 第二个实例的命令行参数数组
  • workingDirectory 字符串 - 第二个实例的工作目录
  • additionalData 未知 - 从第二个实例传递的其他数据的 JSON 对象

当第二个实例已执行并调用app.requestSingleInstanceLock()时,此事件将在应用程序的主实例中发出。

argv是第二个实例的命令行参数的数组,workingDirectory是其当前工作目录。通常,应用程序会通过使主窗口获得焦点并取消最小化来响应此事件。

注意:argv不会与传递给第二个实例的完全相同的参数列表相同。顺序可能会更改,并且可能会附加其他参数。如果您需要保持完全相同的参数,建议改为使用additionalData

注意:如果第二个实例是由与第一个实例不同的用户启动的,则argv数组将不包含参数。

此事件保证在appready事件发出后发出。

注意:Chromium 可能会添加额外的命令行参数,例如--original-process-start-time

方法

app对象具有以下方法

注意:某些方法仅在特定操作系统上可用,并已标注。

app.quit()

尝试关闭所有窗口。首先将发出before-quit事件。如果所有窗口都成功关闭,则将发出will-quit事件,并且默认情况下应用程序将终止。

此方法保证所有beforeunloadunload事件处理程序都已正确执行。窗口可能会通过在beforeunload事件处理程序中返回false来取消退出。

app.exit([exitCode])

  • exitCode 整数 (可选)

立即以exitCode退出。exitCode默认为0。

所有窗口都将立即关闭,无需询问用户,并且不会发出before-quitwill-quit事件。

app.relaunch([options])

  • options 对象 (可选)
    • args 字符串[] (可选)
    • execPath 字符串 (可选)

在当前实例退出时重新启动应用程序。

默认情况下,新实例将使用与当前实例相同的工作目录和命令行参数。当指定args时,args将作为命令行参数传递。当指定execPath时,将执行execPath以重新启动,而不是当前应用程序。

请注意,此方法在执行时不会退出应用程序,您必须在调用app.relaunch后调用app.quitapp.exit才能使应用程序重新启动。

当多次调用app.relaunch时,在当前实例退出后将启动多个实例。

立即重新启动当前实例并向新实例添加新命令行参数的示例

const { app } = require('electron')

app.relaunch({ args: process.argv.slice(1).concat(['--relaunch']) })
app.exit(0)

app.isReady()

返回布尔值 - 如果 Electron 已完成初始化,则为true,否则为false。另请参阅app.whenReady()

app.whenReady()

返回 Promise<void> - 当 Electron 初始化完成后 fulfilled。如果应用程序尚未准备好,则可以用作检查 app.isReady() 和订阅 ready 事件的便捷替代方案。

app.focus([options])

  • options 对象 (可选)
    • steal 布尔值 macOS - 使接收者成为活动应用程序,即使另一个应用程序当前处于活动状态。

在 Linux 上,聚焦于第一个可见窗口。在 macOS 上,使应用程序成为活动应用程序。在 Windows 上,聚焦于应用程序的第一个窗口。

您应该尽可能少地使用 steal 选项。

app.hide() macOS

隐藏所有应用程序窗口,但不将其最小化。

app.isHidden() macOS

返回 boolean - 如果应用程序(包括其所有窗口)已隐藏(例如,使用 Command-H),则返回 true,否则返回 false

app.show() macOS

在隐藏应用程序窗口后显示它们。不会自动聚焦它们。

app.setAppLogsPath([path])

  • path 字符串(可选) - 日志的自定义路径。必须是绝对路径。

设置或创建应用程序日志的目录,然后可以使用 app.getPath()app.setPath(pathName, newPath) 对其进行操作。

在不带 path 参数的情况下调用 app.setAppLogsPath() 将导致此目录在 macOS 上设置为 ~/Library/Logs/YourAppName,在 LinuxWindows 上设置为 userData 目录内。

app.getAppPath()

返回 string - 当前应用程序目录。

app.getPath(name)

  • name 字符串 - 您可以通过名称请求以下路径
    • home 用户的主目录。
    • appData 每个用户的应用程序数据目录,默认指向
      • Windows 上的 %APPDATA%
      • Linux 上的 $XDG_CONFIG_HOME~/.config
      • macOS 上的 ~/Library/Application Support
    • userData 用于存储应用程序配置文件的目录,默认情况下是 appData 目录附加应用程序名称。按照惯例,存储用户数据的文件应写入此目录,并且不建议在此处写入大型文件,因为某些环境可能会将此目录备份到云存储。
    • sessionData 用于存储由 Session 生成的数据的目录,例如 localStorage、cookie、磁盘缓存、下载的字典、网络状态、devtools 文件。默认情况下,它指向 userData。Chromium 可能会在此处写入非常大的磁盘缓存,因此,如果您的应用程序不依赖于浏览器存储(如 localStorage 或 cookie)来保存用户数据,建议将此目录设置为其他位置,以避免污染 userData 目录。
    • temp 临时目录。
    • exe 当前的可执行文件。
    • module libchromiumcontent 库。
    • desktop 当前用户的桌面目录。
    • documents 用户“我的文档”目录。
    • downloads 用户下载目录。
    • music 用户音乐目录。
    • pictures 用户图片目录。
    • videos 用户视频目录。
    • recent 用户最近的文件目录(仅限 Windows)。
    • logs 应用程序日志文件夹目录。
    • crashDumps 存储崩溃转储的目录。

返回 string - 与 name 关联的特殊目录或文件的路径。如果失败,则会抛出 Error

如果在先调用 app.setAppLogsPath() 之前调用了 app.getPath('logs'),则将创建一个默认的日志目录,等同于在不带 path 参数的情况下调用 app.setAppLogsPath()

app.getFileIcon(path[, options])

  • path 字符串
  • options 对象 (可选)
    • size 字符串
      • small - 16x16
      • normal - 32x32
      • large - Linux 上为 48x48,Windows 上为 32x32,macOS 上不支持。

返回 Promise<NativeImage> - 以应用程序图标作为 fulfilled,它是一个 NativeImage

获取路径关联的图标。

Windows 上,有两种图标

  • 与某些文件扩展名关联的图标,例如 .mp3.png 等。
  • 文件本身内的图标,例如 .exe.dll.ico

LinuxmacOS 上,图标取决于与文件 MIME 类型关联的应用程序。

app.setPath(name, path)

  • name 字符串
  • path 字符串

覆盖与 name 关联的特殊目录或文件的 path。如果路径指定一个不存在的目录,则会抛出 Error。在这种情况下,应使用 fs.mkdirSync 或类似方法创建该目录。

您只能覆盖 app.getPath 中定义的 name 的路径。

默认情况下,网页的 cookie 和缓存将存储在 sessionData 目录下。如果要更改此位置,则必须在 app 模块的 ready 事件发出之前覆盖 sessionData 路径。

app.getVersion()

返回 string - 加载的应用程序的版本。如果在应用程序的 package.json 文件中找不到版本,则返回当前捆绑包或可执行文件的版本。

app.getName()

返回 string - 当前应用程序的名称,即应用程序 package.json 文件中的名称。

通常,package.jsonname 字段根据 npm 模块规范是一个简短的小写名称。您通常还应该指定一个 productName 字段,它是应用程序的完整大写名称,Electron 将优先于 name 使用它。

app.setName(name)

  • name 字符串

覆盖当前应用程序的名称。

注意:此函数覆盖 Electron 内部使用的名称;它不影响操作系统使用的名称。

app.getLocale()

返回 string - 当前应用程序区域设置,使用 Chromium 的 l10n_util 库获取。可能的返回值记录在 此处

要设置区域设置,您需要在应用程序启动时使用命令行开关,可以在 此处找到。

注意:分发打包的应用程序时,还必须附带 locales 文件夹。

注意:必须在发出 ready 事件后调用此 API。

注意:要查看此 API 与其他区域设置和语言 API 的示例返回值,请参阅 app.getPreferredSystemLanguages()

app.getLocaleCountryCode()

返回 string - 用户操作系统的区域设置两位 ISO 3166 国家代码。该值取自本机操作系统 API。

注意:无法检测到区域设置国家代码时,它将返回空字符串。

app.getSystemLocale()

返回 string - 当前系统区域设置。在 Windows 和 Linux 上,它使用 Chromium 的 i18n 库获取。在 macOS 上,使用 [NSLocale currentLocale]。要获取用户的当前系统语言(并不总是与区域设置相同),最好使用 app.getPreferredSystemLanguages()

不同的操作系统也以不同的方式使用区域数据

  • Windows 11 使用区域格式表示数字、日期和时间。
  • macOS Monterey 使用区域格式化数字、日期、时间以及选择要使用的货币符号。

因此,此 API 可用于选择日历应用程序中渲染日期和时间的格式,尤其是在开发人员希望格式与操作系统保持一致时。

注意:必须在发出 ready 事件后调用此 API。

注意:要查看此 API 与其他区域设置和语言 API 的示例返回值,请参阅 app.getPreferredSystemLanguages()

app.getPreferredSystemLanguages()

返回 string[] - 用户的首选系统语言,从最优先到最不优先,包括适用的国家/地区代码。用户可以通过 Windows 或 macOS 上的“语言和区域”设置修改和添加到此列表。

该 API 在 Windows 上使用 GlobalizationPreferences(回退到 GetSystemPreferredUILanguages),在 macOS 上使用 \[NSLocale preferredLanguages\],在 Linux 上使用 g_get_language_names

此 API 可用于确定以哪种语言显示应用程序。

以下是一些使用不同配置的各种语言和区域设置 API 的返回值示例

在 Windows 上,给定应用程序区域设置为德语,区域格式为芬兰语(芬兰),首选系统语言(从最优先到最不优先)为加拿大法语、美国英语、简体中文(中国)、芬兰语和拉丁美洲西班牙语

app.getLocale() // 'de'
app.getSystemLocale() // 'fi-FI'
app.getPreferredSystemLanguages() // ['fr-CA', 'en-US', 'zh-Hans-CN', 'fi', 'es-419']

在 macOS 上,给定应用程序区域设置为德语,区域为芬兰,首选系统语言(从最优先到最不优先)为加拿大法语、美国英语、简体中文和拉丁美洲西班牙语

app.getLocale() // 'de'
app.getSystemLocale() // 'fr-FI'
app.getPreferredSystemLanguages() // ['fr-CA', 'en-US', 'zh-Hans-FI', 'es-419']

这两个操作系统上的可用语言和区域以及可能的返回值都不同。

从上面的示例可以看出,在 Windows 上,首选系统语言可能没有国家/地区代码,并且其中一个首选系统语言可能与用于区域格式的语言相对应。在 macOS 上,区域更像是一个默认国家/地区代码:用户不需要将芬兰语作为首选语言才能使用芬兰作为区域,并且国家/地区代码 FI 用于语言名称中没有关联国家/地区的首选系统语言。

app.addRecentDocument(path) macOS Windows

  • path 字符串

path 添加到最近使用的文档列表。

此列表由操作系统管理。在 Windows 上,您可以从任务栏访问此列表,在 macOS 上,您可以从 Dock 菜单访问此列表。

app.clearRecentDocuments() macOS Windows

清除最近打开的文件列表。

app.setAsDefaultProtocolClient(protocol[, path, args])

  • protocol 字符串 - 协议名称,不包含 ://。例如,如果希望您的应用处理 electron:// 链接,请使用 electron 作为参数调用此方法。
  • path 字符串(可选) Windows - Electron 可执行文件的路径。默认为 process.execPath
  • args 字符串数组(可选) Windows - 传递给可执行文件的参数。默认为空数组

返回 boolean - 调用是否成功。

将当前可执行文件设置为协议(也称为 URI 方案)的默认处理程序。它允许您将您的应用更深入地集成到操作系统中。注册后,所有包含 your-protocol:// 的链接都将使用当前可执行文件打开。整个链接(包括协议)将作为参数传递给您的应用程序。

注意:在 macOS 上,您只能注册已添加到应用 info.plist 中的协议,该文件无法在运行时修改。但是,您可以通过 Electron ForgeElectron Packager 或使用文本编辑器编辑 info.plist 来在构建时更改该文件。有关详细信息,请参阅 Apple 文档

注意:在 Windows 应用商店环境(当打包为 appx 时),此 API 将对所有调用返回 true,但它设置的注册表项将无法被其他应用程序访问。为了将您的 Windows 应用商店应用程序注册为默认协议处理程序,您必须 在清单中声明协议

此 API 在内部使用 Windows 注册表和 LSSetDefaultHandlerForURLScheme

app.removeAsDefaultProtocolClient(protocol[, path, args]) macOS Windows

  • protocol 字符串 - 协议名称,不包含 ://
  • path 字符串(可选) Windows - 默认为 process.execPath
  • args 字符串数组(可选) Windows - 默认为空数组

返回 boolean - 调用是否成功。

此方法检查当前可执行文件是否为协议(也称为 URI 方案)的默认处理程序。如果是,它将删除该应用作为默认处理程序。

app.isDefaultProtocolClient(protocol[, path, args])

  • protocol 字符串 - 协议名称,不包含 ://
  • path 字符串(可选) Windows - 默认为 process.execPath
  • args 字符串数组(可选) Windows - 默认为空数组

返回 boolean - 当前可执行文件是否为协议(也称为 URI 方案)的默认处理程序。

注意:在 macOS 上,您可以使用此方法检查应用是否已注册为协议的默认协议处理程序。您还可以通过检查 macOS 机器上的 ~/Library/Preferences/com.apple.LaunchServices.plist 来验证这一点。有关详细信息,请参阅 Apple 文档

此 API 在内部使用 Windows 注册表和 LSCopyDefaultHandlerForURLScheme

app.getApplicationNameForProtocol(url)

  • url 字符串 - 包含要检查的协议名称的 URL。与该系列中的其他方法不同,此方法接受完整的 URL,至少包含 ://(例如 https://)。

返回 string - 处理协议的应用程序名称,如果没有任何处理程序则返回空字符串。例如,如果 Electron 是 URL 的默认处理程序,则在 Windows 和 Mac 上这可能是 Electron。但是,不要依赖于不保证保持不变的精确格式。预计在 Linux 上会有不同的格式,可能带有 .desktop 后缀。

此方法返回 URL 的协议(也称为 URI 方案)的默认处理程序的应用程序名称。

app.getApplicationInfoForProtocol(url) macOS Windows

  • url 字符串 - 包含要检查的协议名称的 URL。与该系列中的其他方法不同,此方法接受完整的 URL,至少包含 ://(例如 https://)。

返回 Promise<Object> - 解析包含以下内容的对象

  • icon NativeImage - 处理协议的应用的显示图标。
  • path 字符串 - 处理协议的应用的安装路径。
  • name 字符串 - 处理协议的应用的显示名称。

此方法返回一个 Promise,其中包含 URL 的协议(也称为 URI 方案)的默认处理程序的应用程序名称、图标和路径。

app.setUserTasks(tasks) Windows

  • tasks Task[] - Task 对象数组

tasks 添加到 Windows 上的跳转列表的“任务”类别。

tasksTask 对象的数组。

返回 boolean - 调用是否成功。

注意:如果要进一步自定义跳转列表,请改用 app.setJumpList(categories)

app.getJumpListSettings() Windows

返回 Object

  • minItems 整数 - 将在跳转列表中显示的最小项目数(有关此值的更详细说明,请参阅 MSDN 文档)。
  • removedItems JumpListItem[] - 与用户已明确从跳转列表中的自定义类别中删除的项目相对应的 JumpListItem 对象数组。在对 app.setJumpList() 的**下一次**调用中,不得将这些项目重新添加到跳转列表中,否则 Windows 将不会显示包含任何已删除项目的自定义类别。

app.setJumpList(categories) Windows

返回 string

设置或删除应用程序的自定义跳转列表,并返回以下字符串之一

  • ok - 没有出错。
  • error - 发生了一个或多个错误,启用运行时日志记录以找出可能的原因。
  • invalidSeparatorError - 尝试将分隔符添加到跳转列表中的自定义类别。分隔符仅允许在标准“任务”类别中。
  • fileTypeRegistrationError - 尝试将文件链接添加到跳转列表中,用于应用程序未注册处理的文件类型。
  • customCategoryAccessDeniedError - 由于用户隐私或组策略设置,无法将自定义类别添加到跳转列表。

如果 categoriesnull,则先前设置的自定义跳转列表(如果有)将被应用程序的标准跳转列表(由 Windows 管理)替换。

注意:如果 JumpListCategory 对象既未设置 type 属性也未设置 name 属性,则其 type 假定为 tasks。如果设置了 name 属性但省略了 type 属性,则 type 假定为 custom

注意:用户可以从自定义类别中删除项目,并且 Windows 不会允许将已删除的项目重新添加到自定义类别中,直到**下一次**成功调用 app.setJumpList(categories) 之后。在此之前尝试将已删除的项目重新添加到自定义类别中会导致整个自定义类别从跳转列表中省略。可以使用 app.getJumpListSettings() 获取已删除项目的列表。

注意:跳转列表项目的 description 属性的最大长度为 260 个字符。超过此限制,项目将不会添加到跳转列表中,也不会显示。

以下是如何创建自定义跳转列表的一个非常简单的示例

const { app } = require('electron')

app.setJumpList([
{
type: 'custom',
name: 'Recent Projects',
items: [
{ type: 'file', path: 'C:\\Projects\\project1.proj' },
{ type: 'file', path: 'C:\\Projects\\project2.proj' }
]
},
{ // has a name so `type` is assumed to be "custom"
name: 'Tools',
items: [
{
type: 'task',
title: 'Tool A',
program: process.execPath,
args: '--run-tool-a',
iconPath: process.execPath,
iconIndex: 0,
description: 'Runs Tool A'
},
{
type: 'task',
title: 'Tool B',
program: process.execPath,
args: '--run-tool-b',
iconPath: process.execPath,
iconIndex: 0,
description: 'Runs Tool B'
}
]
},
{ type: 'frequent' },
{ // has no name and no type so `type` is assumed to be "tasks"
items: [
{
type: 'task',
title: 'New Project',
program: process.execPath,
args: '--new-project',
description: 'Create a new project.'
},
{ type: 'separator' },
{
type: 'task',
title: 'Recover Project',
program: process.execPath,
args: '--recover-project',
description: 'Recover Project'
}
]
}
])

app.requestSingleInstanceLock([additionalData])

  • additionalData Record<any, any>(可选) - 包含要发送到第一个实例的其他数据的 JSON 对象。

返回 boolean

此方法的返回值指示您的应用程序的此实例是否成功获取了锁。如果它未能获取锁,您可以假设您的应用程序的另一个实例已在运行并持有锁,并且应立即退出。

也就是说,如果您的进程是应用程序的主要实例,并且您的应用应该继续加载,则此方法返回 true。如果您的进程应该立即退出,因为它已将其参数发送到已获取锁的另一个实例,则它返回 false

在 macOS 上,当用户尝试在 Finder 中打开应用的第二个实例时,系统会自动强制执行单实例,并且会为此发出 open-fileopen-url 事件。但是,当用户在命令行中启动应用时,系统的单实例机制将被绕过,您必须使用此方法来确保单实例。

当第二个实例启动时,激活主要实例窗口的示例

const { app, BrowserWindow } = require('electron')
let myWindow = null

const additionalData = { myKey: 'myValue' }
const gotTheLock = app.requestSingleInstanceLock(additionalData)

if (!gotTheLock) {
app.quit()
} else {
app.on('second-instance', (event, commandLine, workingDirectory, additionalData) => {
// Print out data received from the second instance.
console.log(additionalData)

// Someone tried to run a second instance, we should focus our window.
if (myWindow) {
if (myWindow.isMinimized()) myWindow.restore()
myWindow.focus()
}
})

app.whenReady().then(() => {
myWindow = new BrowserWindow({})
myWindow.loadURL('https://www.electron.js.cn')
})
}

app.hasSingleInstanceLock()

返回 boolean

此方法返回您的应用的此实例当前是否持有单实例锁。您可以使用 app.requestSingleInstanceLock() 请求锁,并使用 app.releaseSingleInstanceLock() 释放锁。

app.releaseSingleInstanceLock()

释放由 requestSingleInstanceLock 创建的所有锁。这将允许应用程序的多个实例再次并排运行。

app.setUserActivity(type, userInfo[, webpageURL]) macOS

  • type 字符串 - 唯一标识活动。映射到 NSUserActivity.activityType
  • userInfo any - 要存储以供其他设备使用的特定于应用的状态。

  • webpageURL 字符串(可选) - 如果恢复设备上未安装合适的应用,则在浏览器中加载的网页。方案必须为 httphttps

创建一个 NSUserActivity 并将其设置为当前活动。此活动之后有资格进行 Handoff 到另一台设备。

app.getCurrentActivityType() macOS

返回 字符串 - 当前正在运行的活动的类型。

app.invalidateCurrentActivity() macOS

使当前的 Handoff 用户活动无效。

app.resignCurrentActivity() macOS

将当前的 Handoff 用户活动标记为非活动状态,但不使其无效。

app.updateCurrentActivity(type, userInfo) macOS

  • type 字符串 - 唯一标识活动。映射到 NSUserActivity.activityType
  • userInfo any - 要存储以供其他设备使用的特定于应用的状态。

如果当前活动的类型与 type 匹配,则更新当前活动,并将 userInfo 中的条目合并到其当前 userInfo 字典中。

app.setAppUserModelId(id) Windows

  • id 字符串

应用程序用户模型 ID 更改为 id

app.setActivationPolicy(policy) macOS

  • policy 字符串 - 可以是 'regular'、'accessory' 或 'prohibited'。

设置给定应用的激活策略。

激活策略类型

  • 'regular' - 应用程序是一个普通的应用程序,显示在 Dock 中,并且可能具有用户界面。
  • 'accessory' - 应用程序不会显示在 Dock 中,也没有菜单栏,但可以通过编程方式或单击其窗口之一来激活。
  • 'prohibited' - 应用程序不会显示在 Dock 中,并且不能创建窗口或被激活。

app.importCertificate(options, callback) Linux

  • options 对象
    • certificate 字符串 - pkcs12 文件的路径。
    • password 字符串 - 证书的密码。
  • callback 函数
    • result 整数 - 导入的结果。

将 pkcs12 格式的证书导入到平台证书存储中。callback 会使用导入操作的 result 调用,值为 0 表示成功,而任何其他值都表示根据 Chromium net_error_list 失败。

app.configureHostResolver(options)

  • options 对象
    • enableBuiltInResolver 布尔值(可选) - 是否优先使用内置主机解析器而不是 getaddrinfo。启用后,内置解析器将尝试使用系统的 DNS 设置自行执行 DNS 查找。在 macOS 上默认启用,在 Windows 和 Linux 上默认禁用。
    • secureDnsMode 字符串(可选) - 可以是 'off'、'automatic' 或 'secure'。配置 DNS-over-HTTP 模式。当为 'off' 时,不会执行任何 DoH 查找。当为 'automatic' 时,如果 DoH 可用,则会首先执行 DoH 查找,并且会将不安全的 DNS 查找作为回退执行。当为 'secure' 时,仅执行 DoH 查找。默认为 'automatic'。
    • secureDnsServers 字符串数组(可选) - DNS-over-HTTP 服务器模板列表。有关模板格式的详细信息,请参阅 RFC8484 § 3。大多数服务器都支持 POST 方法;此类服务器的模板只是一个 URI。请注意,对于 某些 DNS 提供商,即使在此列表中未提供任何 DoH 服务器,解析器也会自动升级到 DoH,除非明确禁用 DoH。
    • enableAdditionalDnsQueryTypes 布尔值(可选) - 控制在通过不安全的 DNS 进行请求时,除了传统的 A 和 AAAA 查询之外,是否还允许其他 DNS 查询类型(例如 HTTPS(DNS 类型 65))。对始终允许其他类型的安全 DNS 没有影响。默认为 true。

配置主机解析(DNS 和 DNS-over-HTTPS)。默认情况下,将按以下顺序使用以下解析器

  1. DNS-over-HTTPS,如果 DNS 提供商支持它,然后
  2. 内置解析器(默认情况下仅在 macOS 上启用),然后
  3. 系统的解析器(例如 getaddrinfo)。

可以将其配置为限制非加密 DNS 的使用(secureDnsMode: "secure")或禁用 DNS-over-HTTPS(secureDnsMode: "off")。还可以启用或禁用内置解析器。

要禁用不安全的 DNS,可以指定 secureDnsMode"secure"。如果这样做,则应确保提供要使用的 DNS-over-HTTPS 服务器列表,以防用户的 DNS 配置不包含支持 DoH 的提供商。

const { app } = require('electron')

app.whenReady().then(() => {
app.configureHostResolver({
secureDnsMode: 'secure',
secureDnsServers: [
'https://cloudflare-dns.com/dns-query'
]
})
})

此 API 必须在发出 ready 事件后调用。

app.disableHardwareAcceleration()

禁用当前应用的硬件加速。

此方法只能在应用准备就绪之前调用。

app.disableDomainBlockingFor3DAPIs()

默认情况下,如果 GPU 进程崩溃过于频繁,Chromium 会在每个域的基础上禁用 3D API(例如 WebGL),直到重新启动。此函数禁用此行为。

此方法只能在应用准备就绪之前调用。

app.getAppMetrics()

返回 ProcessMetric[]:与应用关联的所有进程的内存和 CPU 使用情况统计信息相对应的 ProcessMetric 对象数组。

app.getGPUFeatureStatus()

返回 GPUFeatureStatus - 来自 chrome://gpu/ 的图形功能状态。

注意:此信息仅在发出 gpu-info-update 事件后才能使用。

app.getGPUInfo(infoType)

  • infoType 字符串 - 可以是 basiccomplete

返回 Promise<unknown>

对于 infoType 等于 complete:Promise 以包含所有 GPU 信息的 Object 填充,如 chromium 的 GPUInfo 对象 中所示。这包括在 chrome://gpu 页面上显示的版本和驱动程序信息。

对于 infoType 等于 basic:Promise 以包含比使用 complete 请求时更少的属性的 Object 填充。这是一个基本响应示例

{
auxAttributes:
{
amdSwitchable: true,
canSupportThreadedTextureMailbox: false,
directComposition: false,
directRendering: true,
glResetNotificationStrategy: 0,
inProcessGpu: true,
initializationTime: 0,
jpegDecodeAcceleratorSupported: false,
optimus: false,
passthroughCmdDecoder: false,
sandboxed: false,
softwareRendering: false,
supportsOverlays: false,
videoDecodeAcceleratorFlags: 0
},
gpuDevice:
[{ active: true, deviceId: 26657, vendorId: 4098 },
{ active: false, deviceId: 3366, vendorId: 32902 }],
machineModelName: 'MacBookPro',
machineModelVersion: '11.5'
}

如果只需要基本信息(如 vendorIddeviceId),则应优先使用 basic

app.setBadgeCount([count]) Linux macOS

  • count 整数(可选) - 如果提供了一个值,则将徽章设置为提供的数值,否则,在 macOS 上,显示一个纯白色圆点(例如,未知通知数量)。在 Linux 上,如果未提供值,则徽章将不会显示。

返回 boolean - 调用是否成功。

设置当前应用程序的计数器徽章。将计数设置为 0 将隐藏徽章。

在 macOS 上,它显示在 Dock 图标上。在 Linux 上,它仅适用于 Unity 启动器。

注意:Unity 启动器需要 .desktop 文件才能工作。有关更多信息,请阅读 Unity 集成文档

注意:在 macOS 上,您需要确保您的应用程序具有显示通知的权限,才能使此方法正常工作。

app.getBadgeCount() Linux macOS

返回 整数 - 计数器徽章中显示的当前值。

app.isUnityRunning() Linux

返回 布尔值 - 当前桌面环境是否为 Unity 启动器。

app.getLoginItemSettings([options]) macOS Windows

  • options 对象 (可选)
    • type 字符串(可选) macOS - 可以是 mainAppServiceagentServicedaemonServiceloginItemService 之一。默认为 mainAppService。仅在 macOS 13 及更高版本上可用。有关每种类型的更多信息,请参阅 app.setLoginItemSettings
    • serviceName 字符串(可选) macOS - 服务的名称。如果 type 非默认值,则需要。仅在 macOS 13 及更高版本上可用。
    • path 字符串(可选) Windows - 要比较的可执行文件路径。默认为 process.execPath
    • args 字符串数组(可选) Windows - 要比较的命令行参数。默认为空数组。

如果您为 app.setLoginItemSettings 提供了 pathargs 选项,则需要在此处传递相同的参数才能正确设置 openAtLogin

返回 Object

  • openAtLogin 布尔值 - 如果应用设置为在登录时打开,则为 true
  • openAsHidden 布尔值 macOS 已弃用 - 如果应用设置为在登录时隐藏打开,则为 true。这在 macOS 13 及更高版本上不起作用。
  • wasOpenedAtLogin 布尔值 macOS - 如果应用在登录时自动打开,则为 true
  • wasOpenedAsHidden 布尔值 macOS 已弃用 - 如果应用作为隐藏的登录项打开,则为 true。这表示应用不应在启动时打开任何窗口。此设置在 MAS 构建 或 macOS 13 及更高版本上不可用。
  • restoreState 布尔值 macOS 已弃用 - 如果应用作为登录项打开,并且应从上一个会话恢复状态,则为 true。这表示应用应恢复上次关闭时打开的窗口。此设置在 MAS 版本 或 macOS 13 及更高版本上不可用。
  • status 字符串 macOS - 可以是 not-registeredenabledrequires-approvalnot-found 之一。
  • executableWillLaunchAtLogin 布尔值 Windows - 如果应用设置为在登录时打开且其运行键未停用,则为 true。这与 openAtLogin 不同,因为它会忽略 args 选项,如果给定的可执行文件将在登录时使用任何参数启动,则此属性将为 true。
  • launchItems 对象数组 Windows
    • name 字符串 Windows - 注册表项的名称值。
    • path 字符串 Windows - 与注册表项对应的应用程序的可执行文件。
    • args 字符串数组 Windows - 传递给可执行文件的命令行参数。
    • scope 字符串 Windows - usermachine 之一。指示注册表项是在 HKEY_CURRENT_USER 下还是 HKEY_LOCAL_MACHINE 下。
    • enabled 布尔值 Windows - 如果应用程序注册表项已启动批准,因此在任务管理器和 Windows 设置中显示为 enabled,则为 true

app.setLoginItemSettings(settings) macOS Windows

  • settings 对象
    • openAtLogin 布尔值(可选) - true 表示在登录时打开应用程序,false 表示删除应用程序作为登录项。默认为 false
    • openAsHidden 布尔值(可选) macOS 已弃用 - true 表示以隐藏方式打开应用程序。默认为 false。用户可以从系统偏好设置中编辑此设置,因此在打开应用程序时应检查 app.getLoginItemSettings().wasOpenedAsHidden 以了解当前值。此设置在 MAS 版本 或 macOS 13 及更高版本上不可用。
    • type 字符串(可选) macOS - 要添加为登录项的服务类型。默认为 mainAppService。仅在 macOS 13 及更高版本上可用。
      • mainAppService - 主应用程序。
      • agentService - 启动代理程序的属性列表名称。属性列表名称必须与应用程序 Contents/Library/LaunchAgents 目录中的属性列表相对应。
      • daemonService 字符串(可选) macOS - 启动守护程序的属性列表名称。属性列表名称必须与应用程序 Contents/Library/LaunchDaemons 目录中的属性列表相对应。
      • loginItemService 字符串(可选) macOS - 登录项服务的属性列表名称。属性列表名称必须与应用程序 Contents/Library/LoginItems 目录中的属性列表相对应。
    • serviceName 字符串(可选) macOS - 服务的名称。如果 type 非默认值,则需要。仅在 macOS 13 及更高版本上可用。
    • path 字符串(可选) Windows - 在登录时启动的可执行文件。默认为 process.execPath
    • args 字符串数组(可选) Windows - 传递给可执行文件的命令行参数。默认为空数组。注意用引号括住路径。
    • enabled 布尔值(可选) Windows - true 将更改启动批准注册表项并在任务管理器和 Windows 设置中“启用/禁用”应用程序。默认为 true
    • name 字符串(可选) Windows - 要写入注册表的值名称。默认为应用程序的 AppUserModelId()。

设置应用程序的登录项设置。

要在 Windows 上使用 Electron 的 autoUpdater,该更新器使用 Squirrel,您需要将启动路径设置为 Update.exe,并传递指定应用程序名称的参数。例如

const { app } = require('electron')
const path = require('node:path')

const appFolder = path.dirname(process.execPath)
const updateExe = path.resolve(appFolder, '..', 'Update.exe')
const exeName = path.basename(process.execPath)

app.setLoginItemSettings({
openAtLogin: true,
path: updateExe,
args: [
'--processStart', `"${exeName}"`,
'--process-start-args', '"--hidden"'
]
})

有关在 macOS 13 及更高版本上将不同的服务设置为登录项的更多信息,请参阅 SMAppService

app.isAccessibilitySupportEnabled() macOS Windows

返回 布尔值 - 如果启用了 Chrome 的辅助功能支持,则为 true,否则为 false。如果检测到辅助技术的用途(例如屏幕阅读器),则此 API 将返回 true。有关更多详细信息,请参阅 https://www.chromium.org/developers/design-documents/accessibility

app.setAccessibilitySupportEnabled(enabled) macOS Windows

手动启用 Chrome 的辅助功能支持,允许在应用程序设置中向用户公开辅助功能开关。有关更多详细信息,请参阅 Chromium 的辅助功能文档。默认情况下禁用。

此 API 必须在发出 ready 事件后调用。

注意:渲染辅助功能树会显著影响应用程序的性能。不应默认启用。

app.showAboutPanel()

显示应用程序的关于面板选项。这些选项可以使用 app.setAboutPanelOptions(options) 覆盖。此函数异步运行。

app.setAboutPanelOptions(options)

  • options 对象
    • applicationName 字符串(可选) - 应用程序的名称。
    • applicationVersion 字符串(可选) - 应用程序的版本。
    • copyright 字符串(可选) - 版权信息。
    • version 字符串(可选) macOS - 应用程序的构建版本号。
    • credits 字符串(可选) macOS Windows - 版权信息。
    • authors 字符串数组(可选) Linux - 应用程序作者列表。
    • website 字符串(可选) Linux - 应用程序的网站。
    • iconPath 字符串(可选) Linux Windows - 应用程序图标在 JPEG 或 PNG 文件格式中的路径。在 Linux 上,将显示为 64x64 像素,同时保留纵横比。在 Windows 上,48x48 PNG 将产生最佳视觉质量。

设置关于面板选项。这将覆盖 macOS 上应用程序的 .plist 文件中定义的值。有关更多详细信息,请参阅 Apple 文档。在 Linux 上,必须设置值才能显示;没有默认值。

如果您未设置 credits 但仍希望在您的应用程序中显示它们,则 AppKit 将按此顺序查找名为“Credits.html”、“Credits.rtf”和“Credits.rtfd”的文件,位于 NSBundle 类方法 main 返回的 bundle 中。找到的第一个文件将被使用,如果未找到任何文件,则信息区域将留空。有关更多信息,请参阅 Apple 文档

app.isEmojiPanelSupported()

返回 布尔值 - 当前操作系统版本是否允许使用原生表情符号选择器。

app.showEmojiPanel() macOS Windows

显示平台的原生表情符号选择器。

app.startAccessingSecurityScopedResource(bookmarkData) MAS

  • bookmarkData 字符串 - 由 dialog.showOpenDialogdialog.showSaveDialog 方法返回的 base64 编码的安全范围书签数据。

返回 函数 - 完成访问安全范围文件后,**必须**调用此函数。如果您忘记停止访问书签,则 内核资源将泄漏,并且您的应用程序将完全失去访问沙盒外部的能力,直到您的应用程序重新启动。

const { app, dialog } = require('electron')
const fs = require('node:fs')

let filepath
let bookmark

dialog.showOpenDialog(null, { securityScopedBookmarks: true }).then(({ filePaths, bookmarks }) => {
filepath = filePaths[0]
bookmark = bookmarks[0]
fs.readFileSync(filepath)
})

// ... restart app ...

const stopAccessingSecurityScopedResource = app.startAccessingSecurityScopedResource(bookmark)
fs.readFileSync(filepath)
stopAccessingSecurityScopedResource()

开始访问安全范围资源。使用此方法,为 Mac App Store 打包的 Electron 应用程序可以访问其沙盒外部,以访问用户选择的文件。有关此系统的工作原理的描述,请参阅 Apple 的文档

app.enableSandbox()

在应用程序上启用完全沙盒模式。这意味着所有渲染器都将在沙盒中启动,而不管 WebPreferencessandbox 标志的值如何。

此方法只能在应用准备就绪之前调用。

app.isInApplicationsFolder() macOS

返回 布尔值 - 应用程序当前是否正在系统应用程序文件夹中运行。与 app.moveToApplicationsFolder() 结合使用

app.moveToApplicationsFolder([options]) macOS

  • options 对象 (可选)
    • conflictHandler 函数<布尔值>(可选) - 移动失败时潜在冲突的处理程序。
      • conflictType 字符串 - 处理程序遇到的移动冲突类型;可以是 existsexistsAndRunning,其中 exists 表示应用程序目录中存在同名应用程序,而 existsAndRunning 表示它既存在又正在运行。

返回 布尔值 - 移动是否成功。请注意,如果移动成功,您的应用程序将退出并重新启动。

默认情况下不会显示确认对话框。如果您希望允许用户确认操作,您可以使用 dialog API 来执行此操作。

注意:如果除用户之外的任何其他原因导致移动失败,则此方法会抛出错误。例如,如果用户取消授权对话框,则此方法返回 false。如果我们无法执行复制,则此方法将抛出错误。错误中的消息应具有信息性,并准确告知您出了什么问题。

默认情况下,如果应用程序目录中存在与要移动的应用程序同名的应用程序且运行,则现有应用程序将被删除,并且活动应用程序将移动到其位置。如果它正在运行,则预先存在的正在运行的应用程序将获得焦点,并且先前活动的应用程序将自行退出。可以通过提供可选的冲突处理程序来更改此行为,其中处理程序返回的布尔值确定是否以默认行为解决移动冲突。例如,返回false将确保不采取进一步的操作,返回true将导致默认行为并继续执行该方法。

例如

const { app, dialog } = require('electron')

app.moveToApplicationsFolder({
conflictHandler: (conflictType) => {
if (conflictType === 'exists') {
return dialog.showMessageBoxSync({
type: 'question',
buttons: ['Halt Move', 'Continue Move'],
defaultId: 0,
message: 'An app of this name already exists'
}) === 1
}
}
})

这意味着,如果用户目录中已存在应用程序,如果用户选择“继续移动”,则该函数将继续执行其默认行为,并且现有应用程序将被删除,并且活动应用程序将移动到其位置。

app.isSecureKeyboardEntryEnabled() macOS

返回boolean - 是否启用了“安全键盘输入”。

默认情况下,此 API 将返回false

app.setSecureKeyboardEntryEnabled(enabled) macOS

  • enabled boolean - 启用或禁用“安全键盘输入”

在您的应用程序中设置“安全键盘输入”是否启用。

通过使用此 API,可以防止诸如密码和其他敏感信息等重要信息被其他进程拦截。

有关更多详细信息,请参阅Apple 的文档

注意:仅在需要时启用“安全键盘输入”,并在不再需要时禁用它。

app.setProxy(config)

返回Promise<void> - 在代理设置过程完成后解析。

设置在没有关联的Session的情况下进行的网络请求的代理设置。目前,这将影响使用Net实用程序进程中发出的请求以及运行时发出的内部请求(例如:地理位置查询)。

此方法只能在应用程序准备就绪后调用。

app.resolveProxy(url)

  • url URL

返回Promise<string> - 使用将用于尝试使用Net实用程序进程中发出请求时使用的url的代理信息解析。

属性

app.accessibilitySupportEnabled macOS Windows

一个boolean属性,如果启用了 Chrome 的辅助功能支持,则为true,否则为false。如果检测到使用辅助技术(例如屏幕阅读器),则此属性将为true。手动将此属性设置为true将启用 Chrome 的辅助功能支持,允许开发人员在应用程序设置中向用户公开辅助功能开关。

有关更多详细信息,请参阅Chromium 的辅助功能文档。默认情况下禁用。

此 API 必须在发出 ready 事件后调用。

注意:渲染辅助功能树会显著影响应用程序的性能。不应默认启用。

app.applicationMenu

一个Menu | null属性,如果已设置则返回Menu,否则返回null。用户可以传递一个Menu来设置此属性。

app.badgeCount Linux macOS

一个Integer属性,返回当前应用程序的徽章计数。将计数设置为0将隐藏徽章。

在 macOS 上,使用任何非零整数设置此值将显示在停靠栏图标上。在 Linux 上,此属性仅适用于 Unity 启动器。

注意:Unity 启动器需要 .desktop 文件才能工作。有关更多信息,请阅读 Unity 集成文档

注意:在 macOS 上,您需要确保您的应用程序具有显示通知的权限,才能使此属性生效。

app.commandLine 只读

一个CommandLine对象,允许您读取和操作 Chromium 使用的命令行参数。

app.dock macOS 只读

一个Dock | undefined对象,允许您在 macOS 上对用户停靠栏中的应用程序图标执行操作。

app.isPackaged 只读

一个boolean属性,如果应用程序已打包,则返回true,否则返回false。对于许多应用程序,此属性可用于区分开发和生产环境。

app.name

一个string属性,指示当前应用程序的名称,即应用程序package.json文件中的名称。

通常,package.jsonname 字段根据 npm 模块规范是一个简短的小写名称。您通常还应该指定一个 productName 字段,它是应用程序的完整大写名称,Electron 将优先于 name 使用它。

app.userAgentFallback

一个string,它是 Electron 将用作全局回退的用户代理字符串。

当在webContentssession级别未设置用户代理时,将使用此用户代理。它有助于确保您的整个应用程序具有相同的用户代理。在应用程序初始化的尽可能早的阶段将其设置为自定义值,以确保使用您覆盖的值。

app.runningUnderARM64Translation 只读 macOS Windows

一个boolean,当为true时表示应用程序当前正在 ARM64 转换器下运行(例如 macOS Rosetta 转换器环境或 Windows WOW)。

当用户错误地在 Rosetta 或 WOW 下运行 x64 版本时,您可以使用此属性提示他们下载应用程序的 arm64 版本。