首页 > 解决方案 > 在所有屏幕上全屏显示窗口

问题描述

我是 ElectronJS 的新手,很抱歉对这些员工还不够聪明。我正在尝试为我未来的公司制作一个登录页面,但首先我需要准备好一切才能开始一些事情。因此,如果有人打开计算机,那么他们需要使用 Windows 登录,当登录时,我的应用程序将出现并询问特定的 pin 码。

大故事,简而言之,我需要让应用程序在所有屏幕上隐藏桌面。

我是在 C# 中这样做的(因为我开始在 C# 中做这个项目,然后我发现了这个 ElectronJS 并改变主意改用它):

private static Rectangle GetDesktopBounds(Form main)
        {
            Rectangle result = new Rectangle();
        for (int i = 0; i < Screen.AllScreens.Length; i++)
            {
            Screen screen = Screen.AllScreens[i];
            result = Rectangle.Union(result, screen.Bounds);
        }

        main.Top = result.Top;
        main.Left = result.Left;
        main.Width = result.Width;
        main.Height = result.Height;
        return result;
    }

它在 C# 中运行良好,但我需要在 ElectronJS 中,我确实尝试过做这样的事情:

    let x;
  let y;
  for (let i = 0; i < screen.getAllDisplays().length; i++) {
    x += screen.getAllDisplays()[i].bounds.width;
    
    console.log(screen.getAllDisplays()[i].bounds.width);
    y += screen.getAllDisplays()[i].bounds.height;
    console.log(screen.getAllDisplays()[i].bounds.height);
  }

接着:

win.setSize(x, y, false);

但它不会将所有屏幕的窗口都设置为全屏。它仅在主屏幕中起作用。如果我控制台记录 x 和 y,那么我会收到 NaN 消息。

所以问题是:如何使窗口全屏并同时显示所有屏幕?

感谢您提前回答。

标签: electron

解决方案


好吧。我找到了解决方案。也许不是完美的,但对我来说很好:

    let displays = screen.getAllDisplays()
  let externalDisplay = displays.map(function (display, index, displays) {
    win = new BrowserWindow(
      {
        x: display.bounds.x,
        y: display.bounds.y,
        width: 1280,
        height: 720,
        fullscreen: true,
        backgroundColor: "#363636",
        frame: false,
        enableLargerThanScreen: true,
        skipTaskbar: true,
        disableAutoHideCursor: false
      }
    );
  })

推荐阅读