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");
})