
# 1
在桌面軟體中,開機自啟動是很常見的功能,在electron中也提供了很好的支持,以下是主要代碼:
//應用是否打包
if (app.isPackaged) {
//設定開機啟動
app.setLoginItemSettings({
openAtLogin: true
});
}
//應用是否打包
if (app.isPackaged) {
//獲取是否開機啟動
const { openAtLogin } = app.getLoginItemSettings();
return openAtLogin;
}
設定開機啟動后,如果不稍加處理,用戶一開電腦,就會彈出你的軟體視窗,這樣不太友好,正常來說某些軟體只有用戶手動打開軟體時才彈出主視窗,開機啟動的話,只收起到系統托盤中會更好一些,
# 2
參考electron開機啟動相關檔案:appsetloginitemsettingssettings-macos-windows
windows
在windows下,setLoginItemSettings方法有一個args引數,利用這個引數就可以達到目的,以下是主要代碼:
//設定開機啟動
app.setLoginItemSettings({
openAtLogin: true,
args: ["--openAsHidden"],
});
//獲取是否開機啟動
const { openAtLogin } = app.getLoginItemSettings({
args: ["--openAsHidden"],
});
return openAtLogin;
設定開機啟動時,在args中傳入--openAsHidden,這個字串可以隨便更改,獲取開機啟動時,也要在args中傳入同樣的字串,不然獲取不到正確的值,
然后在顯示主視窗時,先判斷一下process.argv中是否包含--openAsHidden,如果包含,說明是開機自動啟動的,這時候不顯示視窗;相反 如果不包含--openAsHidden的話,說明是用戶手動啟動軟體,這時正常顯示視窗就好了:
win.once("ready-to-show", () => {
if (process.argv.indexOf("--openAsHidden") < 0)
win.show();
});
macOS
mac下沒有args引數,可以通過openAsHidden來實作,以下是主要代碼:
//設定開機啟動
app.setLoginItemSettings({
openAtLogin: true,
openAsHidden: true,
});
//獲取是否開機啟動
const { openAtLogin } = app.getLoginItemSettings();
return openAtLogin;
光設定openAsHidden: true還不行,也需要做一下判斷:
win.once("ready-to-show", () => {
if (!app.getLoginItemSettings().wasOpenedAsHidden)
win.show();
});
# 3
以上就是我正在使用的Electron開機啟動時隱藏主視窗的方法,顯示系統托盤就用Tray就行,比較簡單,如有其他更好的方式,歡迎交流,,,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/251559.html
標籤:JavaScript
下一篇:聊聊 React
