电子:重新启动计算机后启动时最小化应用程序

时间:2017-07-10 14:17:35

标签: electron

我正在使用node-auto-launch在重新启动计算机后启动我的应用程序。此应用程序仅适用于Windows。我希望默认情况下此应用程序在后台运行时最小化。我可以实现吗?

let bizAnalystAutoLauncher = new AutoLaunch({
  name: 'BizAnalystDesktop'
});

bizAnalystAutoLauncher.enable();
bizAnalystAutoLauncher.isEnabled()
  .then(function (isEnabled: boolean) {
    if (isEnabled) {
      return;
    }
  bizAnalystAutoLauncher.enable();
})
.catch(function (err: any) {
// handle error
 console.log(err);
});

我不希望隐藏应用程序。应用程序图标应显示在任务栏的系统托盘中。

2 个答案:

答案 0 :(得分:0)

我这样做的方法是在开始菜单Programs > startup中使用参数而不是node-auto-launch创建一个快捷方式。然后当app运行时,在process.argv中检查该参数。

因此,要创建一个参数为startMinimized的开始菜单快捷方式,您可以使用此模块windows-shortcuts

require('windows-shortcuts').create(
    '%APPDATA%/Microsoft/Windows/Start Menu/Programs/Startup/myApp.lnk', {
        target: process.execPath,
        args:   'startMinimized',
        icon:   'path/to/icon'
    }, function (err) {
        if (err) {
            throw Error(err);
        }
    }
);

然后你可以写一些这样的脚本来最小化启动时的窗口:

var startMinimized = false;
if (process.argv[2] && process.argv[2].indexOf('startMinimized') != -1) {
    startMinimized = true;
}

var mainWindow = new BrowserWindow({show: !startMinimized});
if (startMinimized) {
    mainWindow.minimize();
}

process.argv是应用程序开头的一组参数。第一个是.exe路径。第二个是松鼠争论。

答案 1 :(得分:0)

所以你想要一些"最小化到托盘"行为。

按照常规方式初始化您的应用,但在初始化mainWindow后调用mainWindow.show()而不是mainWindow.minimize(),然后为mainWiondw minimizerestore添加EventListeners要通过mainWindow.setSkipTaskbar()隐藏或显示应用的任务栏图标的事件:

...
mainWindow.on('restore', () => {
    mainWindow.setSkipTaskbar(false)
})

mainWindow.on('minimize', () => {
    mainWindow.setSkipTaskbar(true)
})
...

添加一个托盘菜单,例如documentation,但请确保添加一个菜单项以恢复应用程序窗口,否则您最终会得到一个在最小化后无法访问的应用程序:

...
const trayMenu = Menu.buildFromTemplate([
    {
        label: 'Show',
        click: () => {
            mainWindow.restore()
        }
    },
    {
        label: 'Quit',
        role: 'quit'
    }
])
tray.setContextMenu(trayMenu)
...