我正在使用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);
});
我不希望隐藏应用程序。应用程序图标应显示在任务栏的系统托盘中。
答案 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 minimize
和restore
添加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)
...