检测 Electron 应用程序何时移动到不同 monitor/display

Detect when Electron app is moved to different monitor/display

我正在构建一个 Electron 应用程序,我配置 window 大小的方式是基于 monitor/display 维度的百分比。

但是,当用户拥有多个显示器时,我很快注意到一个问题。初始 window 尺寸是计算出来的,当用户更改为第二个显示器时永远不会重新计算,因此在显示器尺寸不同的情况下,window 具有另一台显示器上的尺寸错误。

基本上我在这里寻找的是任何类型的事件,它将检测用户何时更改监视器 he/she 正在使用该应用程序,这样我就可以重新计算window 大小基于新的显示器维度。

您可以像这样使用 move event of the BrowserWindow in combination with the screen API:

const {app, BrowserWindow} = require("electron");

let mainWindow;

app.on("ready", function() {
    mainWindow = new BrowserWindow();

    // Screen module must be imported after app is ready (as per docs)
    const {screen} = require("electron");

    mainWindow.on("move", () => {
        const bounds = mainWindow.getBounds();
        const currentDisplay = screen.getDisplayNearestPoint({x: bounds.x, y: bounds.y});

        // Perform your actions here..
        console.log(currentDisplay);
    });
});

在事件处理程序中,您随后可以获取显示指标并根据该指标执行所需的任何操作。

请注意 move event fires very frequently. You may check out the moved 事件或在需要时自行实施某种形式的去抖动。