【问题标题】:Electron: How can I get Screen from BrowserWindow?Electron:如何从 BrowserWindow 获取屏幕?
【发布时间】:2021-11-27 18:12:20
【问题描述】:

我想知道BrowserWindow 在两个或多个屏幕上的位置。 我猜 Electron API 没有给出方法。我怎样才能做到这一点?有什么办法吗??

【问题讨论】:

  • 你能提供更多关于你想要什么的信息吗?谢谢。

标签: javascript electron


【解决方案1】:

没有直接的方法可以实现这一点。但是跟随绝对可以达到您的目的。

const {BrowserWindow, screen} = require('electron');

let window = new BrowserWindow();

// Load a URL and show the window first

const winBounds = window.getBounds();
const whichScreen = screen.getDisplayNearestPoint({x: winBounds.x, y: winBounds.y});
// Returns the screen where your window is located

经过测试可以正常工作。

【讨论】:

  • 本地测试,只有几乎有效。问题(在 Mac 上)是您的窗口可能只显示在一个屏幕上,但它的原点可能会移出它正在显示的屏幕。我可以重现我移动屏幕的过程,直到左侧离开显示器为止,即使只有几点。
【解决方案2】:

用于在您创建窗口后检测哪个屏幕包含您的窗口:

const win = new BrowserWindow({...});

使用Screen API和getDisplayNearestPoint()方法,可以得到屏幕坐标:

const winBounds = win.getBounds();
const distScreen = screen.getDisplayNearestPoint({x: winBounds.x, y: winBounds.y})

另外,如果你想知道哪个屏幕里面有鼠标光标,使用:

let cursor = screen.getCursorScreenPoint();
let distScreen = screen.getDisplayNearestPoint({x: cursor.x, y: cursor.y});

【讨论】:

    【解决方案3】:

    Electron 定义了一个 screen API,其中包含 screen.getAllDisplays() 方法,该方法返回一组当前可用的 Display 对象。

    我猜你必须遍历显示列表,获取它们的边界并检查它们是否与窗口自身的边界相交。或者也许使用 workArea 属性?不幸的是,我只有一个显示器,所以我无法检查它是如何工作的......

    【讨论】:

      猜你喜欢
      • 2022-12-11
      • 2017-05-04
      • 2019-03-21
      • 1970-01-01
      • 2017-12-18
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      相关资源
      最近更新 更多