electron 的窗口设置最大化 最小化

本文介绍了一个针对Electron应用程序的窗口操作封装类,包括窗口最小化、最大化、下载文件等功能,同时提供了设置窗口是否可调整大小、隐藏及显示窗口等方法,并实现了窗口闪烁效果、设置开机启动等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * Created by Administrator on 2016/11/23.
 * 页面对窗口的一些操作封装,用于渲染进程
 */
"use strict";

const Common = require('../../window/common.js');
const { ipcRenderer, remote } = require('electron');
const WinReg = require('winreg');
const RUN_LOCATION = '\\Software\\Microsoft\\Windows\\CurrentVersion\\Run';
const file = process.execPath;

let flashTrayTimer = null;

class WindowUtil{
    // 窗口最小化
    static minWindow() {
        remote.getCurrentWindow().minimize();
    }
    // 窗口最大化
    static maxWindow(isMaxed) {
        const browserWindow = remote.getCurrentWindow();
        if(!isMaxed) {
            browserWindow.unmaximize();
        } else {
            browserWindow.maximize();
        }
    }
    // 设置窗口是否能改变大小,参数true/false
    static setResizable(resizable) {
        remote.getCurrentWindow().setResizable(resizable);
    }
    // 下载文件
    static download(url){
        remote.getCurrentWebContents().downloadURL(url);
    }

    // 隐藏窗口
    static hide(){
        const browserWindow = remote.getCurrentWindow();
        browserWindow.hide();
    }

    // 显示窗口
    static show(){
        const browserWindow = remote.getCurrentWindow();
        browserWindow.show();
    }
    // 窗口闪烁
    static flashFrame(){
        const browserWindow = remote.getCurrentWindow();
     //   if(browserWindow.isFocused() || browserWindow.isVisible())
        if(!browserWindow.isFocused()) {
            browserWindow.showInactive();
            browserWindow.flashFrame(true);
        }
    }
    // 设置窗口最前端显示
    static setAlwaysOnTop(top){
        const browserWindow = remote.getCurrentWindow();
        browserWindow.setAlwaysOnTop(top);
    }

    // 设置开机启动
    static enableAutoStart(callback) {
        let key = new WinReg({hive: WinReg.HKCU, key: RUN_LOCATION});
        key.set('EUC', WinReg.REG_SZ, file, (err)=> {
            console.log('设置自动启动'+err);
            callback(err);
        });
    }
    // 取消开机启动
    static disableAutoStart(callback) {
        let key = new WinReg({hive: WinReg.HKCU, key: RUN_LOCATION});
        key.remove('EUC',  (err)=>{
            console.log('取消自动启动'+err);
            callback(err);
        });
    }
    // 获取是否开机启动
    static getAutoStartValue(callback) {
        let key = new WinReg({hive: WinReg.HKCU, key: RUN_LOCATION});
        key.get('EUC', function (error, result) {
            console.log("查询自动启动:"+JSON.stringify(result));
            console.log("file:"+file);
            if (result) {
                callback(true);
            }
            else {
                callback(false);
            }
        });
    }

    /**
     * 托盘图标闪烁
     * @param flash true:闪烁;false:停止
     */
    static flashTray(flash) {
        let hasIcon = false;
        const tayIcon = './imgs/logo.ico';
        const tayIcon1 = './imgs/empty.png';
        if (flash) {
            if (flashTrayTimer) {
                return;
            }
            flashTrayTimer = window.setInterval(() => {
                ipcRenderer.send('ChangeTrayIcon', hasIcon ? tayIcon : tayIcon1);
                hasIcon = !hasIcon;
            }, 500);
        } else {
            if(flashTrayTimer) {
                window.clearInterval(flashTrayTimer);
                flashTrayTimer = null;
            }
            ipcRenderer.send('ChangeTrayIcon', tayIcon);
        }
    }


}
module.exports = WindowUtil;

 

转载于:https://www.cnblogs.com/sxz2008/p/6767746.html

### 实现Electron应用窗口最大化的方案 在Electron中,可以通过`BrowserWindow`实例对象来控制窗口的行为,其中包括最大化操作。具体来说,可以使用`maximize()`方法让当前窗口达到屏幕的最大尺寸[^1]。 对于创建一个具备最大化能力的窗口而言,首先应当构建基本的窗口结构: ```javascript const { app, BrowserWindow } = require('electron'); let mainWindow; function createWindow() { mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true } }); mainWindow.loadURL(`file://${__dirname}/index.html`); } app.on('ready', createWindow); ``` 为了使该窗口能够响应用户的最大化请求,在HTML文件内嵌入按钮或其他触发器,并通过IPC(进程间通信)向主进程中传递消息以执行最大化命令: ```html <button id="maximize">Maximize</button> <script> require('./renderer.js'); </script> ``` 接着是在渲染进程中处理点击事件并向主进程发送信号: ```javascript // renderer.js document.getElementById('maximize').addEventListener('click', () => { const { ipcRenderer } = require('electron'); ipcRenderer.send('window-maximize'); }); ``` 最后一步就是在主进程中监听来自渲染端的消息并作出相应动作: ```javascript // main.js const { ipcMain } = require('electron'); ipcMain.on('window-maximize', (event) => { if (!mainWindow.isMaximized()) { mainWindow.maximize(); } else { mainWindow.unmaximize(); // 如果已经处于最大化状态,则恢复原状 } }); ``` 上述代码展示了如何在一个简单的Electron应用程序里实现窗口最大化的功能[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值