首页 > 解决方案 > Electron 应用程序 - 如何在全屏模式下禁用/隐藏任务栏中的窗口

问题描述

我已经为此苦苦挣扎了一段时间,但仍然没有找到任何好的解决方案。我正在开发一个 Windows 全屏(信息亭)应用程序,我需要一个模式窗口来输入密码以退出应用程序。我做了模态窗口和功能,但现在的问题是,当模态出现时,主窗口退出全屏并显示带有两个窗口(主窗口和模态)的 Windows (OS) 任务栏。

解决此问题的一种方法是强制应用程序成为 Windows shell 而不是资源管理器。我试图通过更改注册来做到这一点。我的应用程序 exe 文件的密钥HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon,但它不起作用。当我重新启动时,它仍然会打开资源管理器外壳。

我还尝试在 中编辑相同的 Shell 键HKEY_LOCAL_MACHINE\...,但该键要求您以Admin身份运行,这是另一个麻烦,因为我无法让 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”注册表项并保持应用程序的价值。

非常感谢大家的时间和帮助!

标签: windowsmodal-dialogelectronkiosk

解决方案


您可以包含这样的代码:

win.removeMenu();

或者

win.setMenu(null);

其中,win 是创建的浏览器窗口的实例,例如,

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

推荐阅读