Приложение Electron - как отключить/скрыть окна на панели задач в полноэкранном режиме

Я боролся с этим некоторое время и до сих пор не нашел хорошего решения. Я разрабатываю полноэкранное (киоск) приложение для Windows, и мне нужно иметь модальное окно для ввода пароля для выхода из приложения. Я сделал модальное окно и функциональность, но проблема теперь в том, что когда появляется модальное окно, главное окно выходит из полноэкранного режима и показывает панель задач Windows (ОС) с обоими окнами (основным и модальным).

Один из способов исправить это — заставить приложение стать оболочкой Windows вместо проводника. Я пытался это сделать, изменив рег. ключ HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon в исполняемый файл моего приложения, но он не работает. Когда я перезагружаю, он все еще открывает оболочку проводника.

Я также пытался отредактировать тот же ключ Shell в HKEY_LOCAL_MACHINE\..., но для этого требуется, чтобы вы запускали от имени администратора, что является еще одной проблемой, потому что я не мог заставить Electron записать этот reg. ключ от имени администратора.

Примечание: код, который я использую для открытия главного окна:

  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    fullscreen: true,
    frame: false,
    autoHideMenuBar: true,
    kiosk: true,
    skipTaskbar: true,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js'),
      nodeIntegration: false,
      devTools: true
     }
  })

Итак, у кого-нибудь есть какие-либо идеи о том, как: - Либо заставить основное приложение оставаться в полноэкранном режиме все время, либо... - Сделать правильно включенным раздел реестра «Shell» и сохранить значение приложения.

Всем большое спасибо за потраченное время и помощь!


person SomeDev    schedule 20.02.2020    source источник
comment
Важное обновление. У меня была идея, и только что я установил проект на машину с Ubuntu точно так же, как и на Windows, и когда я его запустил, все РАБОТАЛО ОТЛИЧНО!?!? Главное окно остается полноэкранным, модальное окно удобно расположено поверх основного, и на панели докеров ничего не видно в любое время. Более того, при выходе из модального окна оно не исчезает, как в среде Windows. Думаю, Microsoft снова показывает свою способность ломать вещи или усложнять их любой ценой... :)   -  person SomeDev    schedule 20.02.2020


Ответы (2)


Вы можете включить такой код:

win.removeMenu();

or

win.setMenu(null);

где win — экземпляр созданного окна браузера, например,

let win = new BrowserWindow(options:{
        width: 1200,
        height: 800,
        icon: 'path/to/icon'
    })
person Aryesh    schedule 27.10.2020

добавьте пару ключ-значение autoHideMenuBar: true в определение выигрыша:

win = new BrowserWindow({
    width: 1250,
    height: 660,
    autoHideMenuBar: true,
    icon: getAssetPath('icon.png'),
  });
person Mais    schedule 16.05.2021