0
点赞
收藏
分享

微信扫一扫

Electron中globalShortcut模块注册全局快捷键


Electron中使用globalShortcut模块来注册全局快捷键,以实现类似于微信和QQ按快捷键调用剪切窗口的功能。

快捷键在应用程序加载完成后进行注册,在应用程序退出之前取消注册快捷键,以下是代码实现:

主进程文件main.js代码:

// main.js
const { app, BrowserWindow } = require("electron");
const path = require("path");


const createWindow = () => {
    // 创建窗口
    const mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            // 开启node
            nodeIntegration: true,
            // 取消上下文隔离
            contextIsolation: false,
            // 开启remote
            enableRemoteModule:true,
        }
    });
    // 加载本地文件
    mainWindow.loadFile(path.join(__dirname, "index.html"));
    // 加载远程地址
    // mainWindow.loadURL('https://github.com');

    // 开启调试模式
    mainWindow.webContents.openDevTools();

};

// 注意引入的地方,不需要在createWindow里引入
require('./main/globalShortcut');


// 监听应用的启动事件
app.on("ready", createWindow);

// 兼容MacOS系统的窗口关闭功能
app.on("window-all-closed", () => {
    // 非MacOS直接退出
    if (process.platform != "darwin") {
        app.quit();
    }
});

// 点击MacOS底部菜单时重新启动窗口
app.on("activate", () => {
    if (BrowserWindow.getAllWindows.length == 0) {
        createWindow();
    }
})

主进程main.js中引入的globalShortcut.js文件代码:

var { app, globalShortcut } = require("electron");

// 加载完成时注册快捷键
app.on("ready",function(){
    // 全局注册快捷键
    globalShortcut.register("ctrl+e",function(){
        console.log("ctrl+e");
        // 执行快捷键对应的操作
    });

    globalShortcut.register("ctrl+d",function(){
        console.log("ctrl+d");
        // 执行快捷键对应的操作
    });

    // 检测快捷键是否注册
    console.log(globalShortcut.isRegistered("ctrl+e"));
    console.log(globalShortcut.isRegistered("ctrl+d"));

});

// 退出时取消注册快捷键
app.on("will-quit",function(){
    // 取消快捷键的注册
    globalShortcut.unregister("ctrl+e");
    globalShortcut.unregister("ctrl+d");
})

举报

相关推荐

0 条评论