Electron實用技巧-開機啟動時隱藏主窗口,只顯示系統托盤


# 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就行,比較簡單。如有其他更好的方式,歡迎交流。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM