首页 > 文章列表 > Electron中如何获取BrowserWindow实例?

Electron中如何获取BrowserWindow实例?

315 2025-02-27

Electron中如何获取BrowserWindow实例?

Electron 中 JavaScript 获取 BrowserWindow 实例的方法

在 Electron 应用中,您可以通过预加载脚本 (preload.js) 访问 BrowserWindow 实例。这对于调用窗口相关的 API(例如最大化、最小化或关闭窗口)非常有用。

首先,在创建 BrowserWindow 实例时,将预加载脚本指定为 webPreferences 选项的一部分:

const { BrowserWindow } = require('electron');
const path = require('path');

const win = new BrowserWindow({
  width: 800,
  height: 600,
  webPreferences: {
    preload: path.join(__dirname, 'preload.js'),
  },
});

接下来,在预加载脚本 (preload.js) 中,使用 window.require() 函数导入主进程模块。这允许访问 BrowserWindow 模块和其他 Electron API:

// preload.js
const { BrowserWindow } = require('electron');

// 获取当前聚焦的 BrowserWindow 实例
const currentWindow = BrowserWindow.getFocusedWindow();

//  或者,如果需要访问创建窗口的实例,可以在主进程中将实例传递给渲染进程:
//  (在主进程中)
//  win.webContents.on('did-finish-load', () => {
//    win.webContents.send('window-instance', win);
//  });
//  (在渲染进程中)
//  const { ipcRenderer } = require('electron');
//  ipcRenderer.on('window-instance', (event, windowInstance) => {
//    const myWindow = windowInstance;
//  });

// 使用 currentWindow 实例
if (currentWindow) {
  //  例如,最大化窗口
  currentWindow.maximize();
}

通过以上方法,您就可以在渲染进程的 JavaScript 代码中安全地访问和操作 BrowserWindow 实例了。 请注意,getFocusedWindow() 方法返回当前获得焦点的窗口,如果没有窗口获得焦点,则返回 null。 为了确保始终能够访问正确的窗口实例,建议在主进程中将窗口实例通过 IPC 传递给渲染进程,如注释中所示。

来源:1740105021