Electron:如何最小化渲染过程中的窗口

新手上路,请多包涵

设想

我有一个窗口,它有一个 add task button 正在打开一个窗口。每次用户单击它时,它都会打开一个窗口。我在 add task window 上有一个按钮可以最小化它。如何实现这个最小化按钮?

代码

我能够 close maximize 窗口使用下面的代码:

 var winclose = function () {
    window.close();
}

var winmaximize = function () {
    window.moveTo(0, 0);
    window.resizeTo(screen.width, screen.height);
}

但是,我找不到任何可以从渲染过程中最小化窗口的函数。

请帮助,非常感谢;

笔记:

浏览器不向开发人员提供最小化它们的功能。但这是一个不同的场景。这里我使用的是 Electronjs 提供的 chromium。因此,在我们开发桌面应用程序时,必须有一种方法可以做到这一点

虚拟下载链接: 从 OneDrive 下载

原文由 Vikas Bansal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 862
2 个回答

您可以在相应的 BrowserWindow minimize() 。问题是如何最好地访问此实例,而这又取决于您打开窗口的方式以及最小化按钮的位置。从您的示例中,我认为最小化按钮实际上在您要关闭的窗口中,在这种情况下,您可以最小化聚焦窗口,因为当用户单击其中的按钮时,该窗口当前应该具有焦点:

 const { remote } = require('electron')
remote.BrowserWindow.getFocusedWindow().minimize();

或者,您可以使用 BrowserWindow.fromId() 访问相关窗口,例如,如果您想从另一个窗口最小化任务窗口。

原文由 inukshuk 发布,翻译遵循 CC BY-SA 3.0 许可协议

旧线程,但应该注意远程模块被视为安全问题,不鼓励使用它(参见 此处)。它也在 electron 12 中按原样弃用(参见 此处)。

相反,您可以通过 IPC 发送命令来调用最小化。

从渲染器:

 ipcRenderer.send('minimize')

主要是:

 ipcMain.on('minimize', () => {
  win.minimize()
  // or depending you could do: win.hide()
})

你也可以只做一个切换(主要):

 ipcMain.on('minimize', () => {
  win.isMinimized() ? win.restore() : win.minimize()
  // or alternatively: win.isVisible() ? win.hide() : win.show()
})

对于动态制作的窗口(如其他答案中所述并且似乎是用例),您可以使用(代替“win”):

 BrowserWindow.getFocusedWindow()

如果你有多个窗口(这就是重点),这会导致切换问题,但你可以使用 BrowserWindow.getAllWindows() 并迭代,如果你想从当前渲染器进程之外恢复特定窗口(比如通过 ID ).不知道您为什么要这样做,但为了完整起见,我将其包括在内。

原文由 jtvberg 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题