如何区分应用是通过最小化按钮还是任务栏图标触发的最小化?
解决方案
要区分点击窗口最小化按钮和任务栏图标触发的最小化行为,你可以通过监听窗口的焦点状态判断操作来源,仅在窗口处于焦点时(点击自身最小化按钮)拦截默认行为并隐藏应用,非焦点状态下(点击任务栏图标)保留系统默认的最小化逻辑。
修改后的代码如下:
// 记录窗口焦点状态 let isWindowFocused = true; // 监听窗口焦点变化 win.on('focus', () => { isWindowFocused = true; }); win.on('blur', () => { isWindowFocused = false; }); win.on("minimize", function(event) { // 仅当窗口处于焦点时(点击自身最小化按钮),执行后台隐藏逻辑 if (isWindowFocused) { event.preventDefault(); win.hide(); win.setSkipTaskbar(true); // 隐藏任务栏图标,实现后台效果 console.log("应用已后台隐藏"); } // 非焦点状态下(点击任务栏图标),不拦截,执行系统默认最小化 }); // 恢复窗口时重新显示任务栏图标 win.on('show', () => { win.setSkipTaskbar(false); });
逻辑说明
- 点击窗口标题栏的最小化按钮时,窗口处于焦点状态,此时拦截默认最小化行为,调用
win.hide()隐藏窗口,并通过setSkipTaskbar(true)隐藏任务栏图标,实现后台隐藏效果。 - 点击任务栏图标触发最小化时,窗口会先失去焦点,此时不拦截事件,让系统执行正常最小化流程(窗口最小化到任务栏,点击可恢复)。
- 窗口从隐藏状态恢复显示时,重新设置
setSkipTaskbar(false),让任务栏图标再次可见。
内容的提问来源于stack exchange,提问作者Sandy_7
相关产品推荐
相关产品推荐

