You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何区分应用是通过最小化按钮还是任务栏图标触发的最小化?

解决方案

要区分点击窗口最小化按钮和任务栏图标触发的最小化行为,你可以通过监听窗口的焦点状态判断操作来源,仅在窗口处于焦点时(点击自身最小化按钮)拦截默认行为并隐藏应用,非焦点状态下(点击任务栏图标)保留系统默认的最小化逻辑。

修改后的代码如下:

// 记录窗口焦点状态
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:20:53