gpt4 book ai didi

javascript - 按 Win + D 导致不允许最小化的 Electron 窗口在 Windows 10 上最小化

转载 作者:行者123 更新时间:2023-12-05 08:12:19 32 4
gpt4 key购买 nike

使用 electron 16.9.1,我构建了一个应用程序,其窗口不允许最小化并且其 alwaysOnTop 属性设置为 false。换句话说,这个想法是有一个不能最小化的窗口,它总是在其他窗口的“下面”。

窗口的配置如下所示:

const win = new BrowserWindow({
resizable: false,
movable: false,
minimizable: false,
maximizable: false,
alwaysOnTop: true,
fullscreenable: false,
show: false,
frame: false,
backgroundColor: "#00FFFFFF",
transparent: true,
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
});

它工作正常,应用程序的功能按照我的计划运行,只有一个小缺陷:一旦我使用 Win + D 快捷方式,窗口就会最小化。我知道很多应用都有这种行为,但我真正想知道的是是否有办法避免这种情况。

[更新]我意识到我试图要求的是不可能的,相反,我现在正在尝试另一种方法:在 Electron 中收听“显示桌面”事件。每次触发该事件时,我都会再次显示该窗口。因此,问题现在变成了:我如何监控此类事件

最佳答案

What I really want to achieve is allowing any window to get over it, but not the desktop.

Every time that event is triggered, I will show the window again. And so, the problem has now changed to: how do I monitor such an event?

minimizable: true已设置,BrowserWindow 会触发 minimize Win+D 时的事件和 Win+M被按下。所以,我们可以设置minimizable: true并收听那些,包括用户最小化、事件和恢复窗口。作为frame:false设置后用户将看不到最小化按钮,只有单击任务栏图标的选项才可用。

let mainWindow;
let counter = 0;

function createWindow() {
mainWindow = new BrowserWindow({
width: 600,
height: 300,
show: false,
resizable: false,
movable: false,
minimizable: true, /* keep it true */
maximizable: false,
alwaysOnTop: false,
fullscreenable: false,
frame: false,
backgroundColor: '#00FFFFFF',
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
contextIsolation: true,
enableRemoteModule: false,
nodeIntegration: false,
},
});

mainWindow.loadURL(indexPath);

//try to restore window on minimize
mainWindow.on('minimize', (e) => {
e.preventDefault();
console.log('minimize', ++counter);
//try changing delay value
setTimeout(() => mainWindow.restore(), 200);
});

mainWindow.on('restore', () => {
console.log('restore', counter);
});

mainWindow.once('ready-to-show', () => {
mainWindow.show();
if (dev) {
mainWindow.webContents.openDevTools();
}
});

mainWindow.on('closed', function () {
mainWindow = null;
});
}


桌面不会立即出现,它需要时间,因此我们不能将延迟设置得太低以恢复我们的窗口。我故意在演示代码中保持较高的延迟。一旦调用 restore,下一次 restore 调用将无效。缺点是用户将能够单击任务栏中的应用程序图标,应用程序将弹回。

关于javascript - 按 Win + D 导致不允许最小化的 Electron 窗口在 Windows 10 上最小化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70547227/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com