如何恢复电子应用程序中的默认窗口大小?

2024-03-22

有没有办法将电子应用程序中的主窗口恢复到一定大小?为了解释我想要实现的目标,让我举个例子:

当我打开 Windows 资源管理器时,它会以特定大小并在特定位置打开。然后我最大化该窗口并关闭资源管理器。下次当我重新启动资源管理器时,它会以与关闭它时相同的状态打开,即处于最大化状态。但是,当我单击恢复按钮时,资源管理器将恢复到最大化之前的宽度/高度和位置。

我也想在我的电子应用程序中完成同样的任务。然而这并没有发生。

我正在做的是,当我的应用程序关闭时,我使用 (win.getBounds())并将它们保存在配置文件中使用electron-config。这就是我的代码的样子:

  const Config = require('electron-config')
  const config = new Config();

  mainWindow.on('close', () => {
    config.set('winBounds', mainWindow.getBounds())
  });

现在,当我启动应用程序时,我从配置文件中读取设置(实际上 electro-config 为我做到了这一点)并使用它来设置窗口的初始尺寸/位置。我正在使用如下代码:

  let opts = {
    show: false,
    icon: path.join(__dirname, 'app-window-icon.png')
  };
  Object.assign(opts, config.get('winBounds'));
  mainWindow = new BrowserWindow(opts);

这也很有效。然而,我现在唯一的选择是最大化窗口。我无法找到任何选项将窗口恢复到最大化之前的大小。

例如,假设用户启动尺寸为 1024x768 像素的应用程序。然后,用户最大化应用程序窗口,然后将其关闭。当用户重新启动应用程序时,它会以关闭时的大小打开,我看到的唯一选项是最大化窗口。我正在寻找的是将窗口大小恢复为 1024x768px 的选项。

我在这里查阅了文档:https://github.com/lectron/Electron/blob/master/docs/api/browser-window.md https://github.com/electron/electron/blob/master/docs/api/browser-window.md但不幸的是在那里找不到任何东西。


我用的是解决方案在这里 https://medium.com/@hql287/persisting-windows-state-in-electron-using-javascript-closure-17fc0821d37这涉及到保持你的窗口大小和位置electron-settings它工作得很好。

包括windowStateKeeper在您的代码中运行,然后调整您的createMainWindow函数如下:

function createMainWindow() {
    const mainWindowStateKeeper = windowStateKeeper('main');
    const win = new electron.BrowserWindow({
        title: 'main',
        x: mainWindowStateKeeper.x,
        y: mainWindowStateKeeper.y,
        width: mainWindowStateKeeper.width,
        height: mainWindowStateKeeper.height
    });
    mainWindowStateKeeper.track(win);

    win.loadURL(`file://${__dirname}/index.html`);
    win.on('closed', onClosed);

    return win;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何恢复电子应用程序中的默认窗口大小? 的相关文章

随机推荐

  • 绘制一个矩形 google.maps.Polygon 给定其中心点和尺寸

    我正在编写一个 PHP 脚本 它接受 XML 输入 解析它 然后显示 最终旋转 矩形和椭圆区域 因为区域可以旋转 所以我必须使用google maps Polygon并不是Rectangle 为了处理旋转我希望使用谷歌地图多边形旋转 htt
  • 如何以编程方式从 spring-boot-actuator 获取指标?

    我们在生产中有一个弹簧应用程序 它不是 Spring boot 我发现这个帖子 https stackoverflow com questions 26913087 use spring boot actuator without a sp
  • 我可以在 Node 中执行字符串命令吗?

    如果我构造一个存储在字符串变量中的函数或命令列表 有没有办法可以在节点中执行它们并保留另一个变量中返回的内容 IE var result executeMyCoolStringCommands myStringVariableWithCom
  • Phonegap数据库问题-在数据库中存储图像

    我正在尝试使用以下选项制作一个非常基本的库存应用程序 添加库存中物品的照片 我已拥有一切 除了照片部分外正在工作 我看过这个 http phonegap pbworks com iPhone 3A Camera API http phone
  • 如何让Gedit看起来像Textmate?

    我想让 Gedit 看起来像 Textmate 并且行为也像它 我在网上阅读了很多教程 但找不到易于遵循的指南 我正在使用 Ubuntu 11 04 并希望将其用于 Ruby on Rails 和其他网络语言 我只想要核心功能 例如类 项目
  • 如何从 Docker 控制 fluidd 日志标签

    当前设置正在运行 Docker 容器fluentd driver docker run log driver fluentd my container 这工作起来很容易 将标准输出发送到主机上本地运行的 Fluentd 系统 我想控制流利t
  • MapStruct - @Mapper 注释不创建 bean

    我从此来源下载了应用程序https github com springframeworkguru spring5 mvc rest tree vendor api https github com springframeworkguru s
  • Bootstrap 5 有内置水平线吗?

    我正在寻找样式或彩色水平线 最好有成功 主要 警告类别 类似的概念彩色链接 https getbootstrap com docs 5 0 helpers colored links 我在 Bootstrap 的网站上找不到这个主题 我找到
  • 如何使用 jest/enzyme 中的“current”属性测试 useRef

    我希望有人能指出我正确的测试方向useRef在下面的组件中 我有一个类似于下面的组件结构 我正在尝试测试其中的功能otherFunction 但我不确定如何模拟组件引用中的当前属性 以前有人做过这样的事情吗 const Component
  • 应用内购买从服务器检索信息时出错 [DF-AA-20]

    我正在尝试启用应用程序计费 我已经在我的 Google Play 控制台上创建了应用内产品并获得了我的许可证密钥 当我尝试购买产品时 我收到此图像错误 这是我用来创建 BillingProcessor 的代码 bp new BillingP
  • “或”和||之间的区别在鲁比? [复制]

    这个问题在这里已经有答案了 两者有什么区别or and Ruby 中的运算符 或者这只是偏好 这是一个运算符优先级的问题 优先级高于or 因此 在两者之间还有其他运算符 包括三元 和赋值 因此您选择哪一个会影响语句的结果 这是一个ruby
  • python 中复杂的类似 matlab 的数据结构 (numpy/scipy)

    我目前在 Matlab 中的数据结构如下 item i attribute1 2 j 其中 item 是 i 1 n 中的一个单元格 每个单元格包含多个属性的数据结构 每个属性的大小为 2 j 的矩阵 其中 j 1 m 属性的数量不固定 我
  • Karma - 包含 html 文件时出现意外标记

    我试图在我的 karma 配置文件中包含一个简单的 html 文件 以访问我的 javascript 文件中的 html 元素 并使用 karma 中的 jasmine 进行测试 但我总是得到一个意外令牌 错误 我在网络广播中看到可以包含
  • JEST + React 测试库:我应该在测试之前使用 beforeAll 渲染我的组件吗?

    正如标题所示 我正在使用 RTL Jest 使用 Create react app 设置 我的问题是 我是否应该在每个测试中使用 beforeAll 来预渲染该块中的组件 这样每个测试就不必从头开始重新渲染组件 因为我的测试套件始终从相同的
  • 给定一组 GraphQL 变量类型,是否可以使用客户端模式为该组中的每种类型创建所有有效值的映射

    标题主要说明了一切 我正在构建一个反应 中继应用程序 它将允许用户在运行时动态创建图表 显示指定时间范围内的各种收入流 该图表的一个特点是用户能够指定每个收入流的采样间隔 例如 YEAR QUARTER MONTH WEEK等 作为每个流的
  • 无法启动动物园管理员

    我正在使用合流平台 zookeeper 处于活动状态查找状态 但是当我尝试用 confluence 启动 kafka 时 它显示 Zookeeper 已关闭 sudo service zookeeper status Redirecting
  • Phonegap、Cordova 观察位置每 1 秒成功发射一次

    平台 iOS6 OSx Lion 我试图弄清楚 Phonegap Cordova 的工作方式navigator geolocation watchPosition 文档说该选项 maximumAge 是要求系统检索位置的一个 因此 有了这些
  • 将 DataTable 转换为 IEnumerable

    我正在尝试将 DataTable 转换为 IEnumerable 其中 T 是我创建的自定义类型 我知道我可以通过创建一个List
  • ERR_TOO_MANY_REDIRECTS:我的代码是否被锁定在循环中?

    我正在尝试完成 Tableau js API 教程 当我尝试将在线示例与我发布到服务器的图表一起使用时 我立即遇到了 ERR TOO MANY REDIRECTS 错误 我对这项工作还很陌生 所以我想我应该提供相关的片段 看看您是否可以发现
  • 如何恢复电子应用程序中的默认窗口大小?

    有没有办法将电子应用程序中的主窗口恢复到一定大小 为了解释我想要实现的目标 让我举个例子 当我打开 Windows 资源管理器时 它会以特定大小并在特定位置打开 然后我最大化该窗口并关闭资源管理器 下次当我重新启动资源管理器时 它会以与关闭