【问题标题】:How to Launch/Focus electron app from browser link?如何从浏览器链接启动/聚焦电子应用程序?
【发布时间】:2021-02-05 10:36:55
【问题描述】:

我需要从浏览器链接启动电子应用程序或将其聚焦(如果已启动)。我已经搜索并尝试了许多解决方案,但没有让它发挥作用,所以如果有人对此有任何经验,你能帮忙吗?

代码如下:

// Single instance app ==========
const gotTheLock = app.requestSingleInstanceLock();
if (!gotTheLock) {
    app.quit();
} else {
    app.on('second-instance', (event, commandLine, workingDirectory) => {
        // Someone tried to run a second instance, we should focus our window.
        if (mainWindow) {
          if (mainWindow.isMinimized()) mainWindow.restore();
          mainWindow.focus();
        }
  });
}

// Register private URI scheme for the current user when running for the first time
app.setAsDefaultProtocolClient('x-protocol');

当我尝试使用此代码启动时,我得到 goTheLock 值为 false,但 second-instance 事件没有被触发,不知道为什么。

版本详情:

平台:Windows 10

电子:8.5.3

电子制造商: 21.2.0

更新: 我在退出 !gotTheLock 内的应用程序之前添加了 5 秒的延迟,在这种情况下,我收到了事件。

const gotTheLock = app.requestSingleInstanceLock();
if (!gotTheLock) {
    delay(5000); // 5 seconds delay
    app.quit();
} else {
    app.on('second-instance', (event, commandLine, workingDirectory) => {
        // Someone tried to run a second instance, we should focus our window.
        if (mainWindow) {
          if (mainWindow.isMinimized()) mainWindow.restore();
          mainWindow.focus();
        }
  });
}

【问题讨论】:

    标签: node.js electron


    【解决方案1】:

    我不明白。如果您想从浏览器链接启动应用程序,那么为什么要实施第二个实例?如果您第二次打开应用程序,second-instance 将触发。

    像这样,

    const gotTheLock = app.requestSingleInstanceLock();
    if (!gotTheLock) {
        if (win) {
            app.quit();
        }
    } else {
        app.on('second-instance', (event, commandLine, workingDirectory) => {
            if (win) {
                win.show();
                win.focus();
            }
        })
    }
    

    【讨论】:

    • 假设我们已经打开了一个应用程序,然后我想专注于它,而不是启动一个新应用程序。
    • 你可以像这样检查锁。
    • 如果您查看我的代码,这与我正在做的事情相同。如果我这样做,那么如果未定义胜利(未打开),它将在我的应用程序启动托盘窗口时创建该应用程序的第二个实例。
    • 我不知道为什么,但我在退出应用程序之前在代码中放了一些延迟,然后它给了第二个实例事件捕获的时间。
    • 这不是必需的。
    猜你喜欢
    • 1970-01-01
    • 2016-09-11
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多