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: {// 开启nodenodeIntegration: true,// 取消上下文隔离contextIsolation: false,// 开启remoteenableRemoteModule: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");
})