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

Vik*_*sal 7 javascript jquery node.js 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);
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法找到任何可以最小化渲染进程窗口的函数.

请多多帮助,谢谢;

注意:

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

Dummy下载链接:从OneDrive下载

inu*_*huk 19

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

const { remote } = require('electron')
remote.BrowserWindow.getFocusedWindow().minimize();
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用它BrowserWindow.fromId()来访问相关窗口,例如,如果您想要从其他窗口最小化任务窗口.


jtv*_*erg 6

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

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

从渲染器:

ipcRenderer.send('minimize')
Run Code Online (Sandbox Code Playgroud)

在主要:

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

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

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

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

BrowserWindow.getFocusedWindow()
Run Code Online (Sandbox Code Playgroud)

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


li *_*i x 5

如果您偶然发现此线程并正在使用电子 vue,您可以this.$electron.remote.BrowserWindow.getFocusedWindow().minimize();直接从渲染器内部使用。