如何在Task

时间:2019-09-22 02:15:40

标签: javascript electron

我正在使用电子5.0.0,并且正在尝试使用Windows JumpList和Task类别退出我的电子应用程序。

    {
        program: process.execPath,
        arguments: '--new-window',
        iconPath: process.execPath,
        iconIndex: 0,
        title: 'New Window',
        description: 'Create a new window'
    }
])

我正在尝试从电子网站修改示例代码,我需要更改参数

“参数字符串-执行程序时的命令行参数。”

我知道Windows内置了--new-window之类的参数

所以我的问题是Windows是否具有退出应用程序的功能,或者我是否需要自定义参数?

我希望它具有与Skype相同的功能查看图片 enter image description here

编辑:

我尝试使用第二实例事件,但是当用户单击任务时似乎没有调用它

app.setUserTasks([
    {
        program: process.execPath,
        arguments: '--force-quit',
        iconPath: process.execPath,
        iconIndex: 0,
        title: 'Force Quit App',
        description: 'This will close the app instead of minimizing it.'
    }
])
app.on('second-instance', (e, argv)=>{
    console.log("secinst" + argv)
    if(argv === '--force-quit'){
        win.destroy();
    }

})

1 个答案:

答案 0 :(得分:1)

如果您设置这样的任务:

app.setUserTasks([
    {
        program: process.execPath,
        arguments: '--force-quit',
        iconPath: process.execPath,
        iconIndex: 0,
        title: 'Force Quit App',
        description: 'This will close the app instead of minimizing it.'
    }
])

单击时,这将使用命令行参数--force-quit启动应用程序的新实例。您应该处理该论点。

仅当您允许运行single instance个应用程序时,您的用例才有意义。您需要从argv事件中获取second-instance

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

const gotTheLock = app.requestSingleInstanceLock()

if (!gotTheLock) {
  app.quit()
} else {
  app.on('second-instance', (event, argv, workingDirectory) => {
    // Someone tried to run a second instance
    const forceQuit = argv.indexOf("--force-quit") > -1;
    if (forceQuit) app.quit()
  })

  // Create myWindow, load the rest of the app, etc...
  app.on('ready', () => {
  })
}