从其他应用中的 URL 启动您的应用

本指南将会指导您配置 Electron 应用为的默认处理器。

通过此教程,您会掌握如何设置您的应用以拦截并处理任意特定协议的URL的点击事件。 在本指南中,我们假定这个协议名为“”。

其次,我们将应用注册为“electron-fiddle://”协议的处理器。

  1. if (process.defaultApp) {
  2. if (process.argv.length >= 2) {
  3. app.setAsDefaultProtocolClient('electron-fiddle', process.execPath, [path.resolve(process.argv[1])])
  4. }
  5. app.setAsDefaultProtocolClient('electron-fiddle')
  6. }

现在我们定义负责创建浏览器窗口的函数,并加载应用的 index.html 文件。

与 MacOS 或 Linux 不同,在 Windows 下需要其他的代码。 这是因为在 Windows 中需要特别处理在同一个 Electron 实例中打开的协议的内容。 请点击 此处 了解更多

  1. const gotTheLock = app.requestSingleInstanceLock()
  2. if (!gotTheLock) {
  3. } else {
  4. app.on('second-instance', (event, commandLine, workingDirectory) => {
  5. // 用户正在尝试运行第二个实例,我们需要让焦点指向我们的窗口
  6. if (mainWindow) {
  7. if (mainWindow.isMinimized()) mainWindow.restore()
  8. mainWindow.focus()
  9. }
  10. })
  11. // 创建 mainWindow,加载其他资源,等等……
  12. app.whenReady().then(() => {
  13. createWindow()
  14. })
  15. app.on('open-url', (event, url) => {
  16. dialog.showErrorBox('欢迎回来', `导向自: ${url}`)
  17. })
  18. }

最后,我们还需要处理应用的关闭事件。

  1. // 在除 MacOS 的其他平台上,当所有窗口关闭后,退出当前应用。 在 MacOS 上,
  2. // 应用及其菜单栏通常会保持活跃状态,
  3. // 直到用户明确按下 Cmd + Q 退出应用。
  4. app.on('window-all-closed', function () {
  5. })

启动 Electron 应用后,在浏览器内键入包含该自定义协议的 URL,如,观察应用是否正确响应并显示一个错误提示对话框。