ElectronでglobalShortcutモジュール登録グローバルショートカット

2118 ワード

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

メインプロセス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");
})