我正在使用节点自动启动在计算机重新启动后启动我的应用程序。此应用程序仅适用于窗口。我希望默认情况下启动此应用程序,因为它在后台工作。我能做到这一点吗?
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
路径。二是松鼠论点。