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



我正在使用节点自动启动在计算机重新启动后启动我的应用程序。此应用程序仅适用于窗口。我希望默认情况下启动此应用程序,因为它在后台工作。我能做到这一点吗?

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);
});

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

所以你想要某种"最小化到托盘"的行为。

以通常的方式初始化您的应用程序,而不是mainWindow.show()在初始化 mainWindow 后调用mainWindow.minimize(),然后为 mainWiondw 的minimize添加事件侦听器,并restore事件以通过mainWindow.setSkipTaskbar()隐藏或显示应用程序的任务栏图标:

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

添加托盘菜单,如文档中所示,但请确保添加菜单项以还原应用程序窗口,否则最终将得到一个在最小化后无法访问的应用程序:

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

我会这样做的方式是我会在开始菜单中创建一个带有参数Programs > startup快捷方式,而不是使用node-auto-launch.然后,当应用程序运行时,请检查该参数是否在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路径。二是松鼠论点。

最新更新