15. Electron注册全局快捷键

全局快捷键模块就是globalShortcut,意思就是我们打开软件以后,按键盘上的快捷键,就可以实现用快捷键实现特定的功能,相当于用键盘快捷键触发某些事件。

globalShortcut是主进程中的模块,而且注册的都是全局的快捷键,所以你尽量写在main.js中。打开main.js,然后先引入globalShortcut,代码如下:

var  globalShortcut = electron.globalShortcut

引入后,我们现在的需求是按快捷键ctrl+b键后,打开我的博客https://mybj123.com。这时候使用globalShortcut.register方法就可以实现,全部代码如下:

var electron = require('electron'); // 引入electron模块

var app = electron.app; // 创建electron引用
var globalShortcut = electron.globalShortcut;

var BrowserWindow = electron.BrowserWindow; // 控制窗口引用

var mainWindow = null; // 声明要打开的主窗口

app.on('ready', () => {
    mainWindow = new BrowserWindow({
        width:1000,
        height:600,// 设置打开的窗口大小
        webPreferences: {
            contextIsolation: false,
            worldSafeExecuteJavaScript: false,
            webSecurity: false,
            nodeIntegration: true, // 是否集成node.js,解决require is not defined问题
            nodeIntegrationInWorker: true,
            webviewTag: true, // 解决webview无法显示问题
            enableRemoteModule: true
        }
    });
    globalShortcut.register('ctrl+b',() => {
        mainWindow.loadURL('https://mybj123.com');
    });

    require('./main/menu.js');
    mainWindow.loadFile('index6.html'); // 加载HTML页面

    // 监听关闭事件,把主窗口设置为null
    mainWindow.on('closed', () => {
        mainWindow = null;
    })
})

这里需要注意的是,注册全局的快捷键必须在ready事件之后,才能注册成功。

检测快捷键是否注册成功

可以使用globalShortcut.isRegistered()方法,来检测快捷键是否注册成功,因为你可能同时打开很多软件,它们已经占用了一些快捷键的组合,所以并不是你100%可以注册成功的。

let isRegister= globalShortcut.isRegistered('ctrl+b')?'Register Success':'Register fail'
console.log('------->'+isRegister)

这样就进行了检测,如果你在实际开发中,可能当有冲突时,软件是支持可以修改快捷键。

注销快捷键

因为我们注册的是全局的快捷键,所以当我们关闭软件或者窗口时,记得一定要注销我们的快捷键。防止关闭后打开其他软件和他们的快捷键冲突。

app.on('will-quit',function(){
    //注销全局快捷键的监听
    globalShortcut.unregister('ctrl+b')
    globalShortcut.unregisterAll()

})

为了方便学习,给出全部main.js代码:

var electron = require('electron'); // 引入electron模块

var app = electron.app; // 创建electron引用
var globalShortcut = electron.globalShortcut;

var BrowserWindow = electron.BrowserWindow; // 控制窗口引用

var mainWindow = null; // 声明要打开的主窗口

app.on('ready', () => {
    mainWindow = new BrowserWindow({
        width:1000,
        height:600,// 设置打开的窗口大小
        webPreferences: {
            contextIsolation: false,
            worldSafeExecuteJavaScript: false,
            webSecurity: false,
            nodeIntegration: true, // 是否集成node.js,解决require is not defined问题
            nodeIntegrationInWorker: true,
            webviewTag: true, // 解决webview无法显示问题
            enableRemoteModule: true
        }
    });
    globalShortcut.register('ctrl+e',() => {
        mainWindow.loadURL('https://baidu.com');
    });

    let isRegister = globalShortcut.isRegistered('ctrl+e')?'Register Success' : 'Register fail';
    console.log('------------' + isRegister);

    mainWindow.webContents.openDevTools();
    require('./main/menu.js');
    mainWindow.loadFile('index6.html'); // 加载HTML页面

    // BrowserView
    // var BrowserView =electron.BrowserView;
    // var view = new BrowserView();
    // mainWindow.setBrowserView(view);
    // view.setBounds({x:0,y:100,width:1000,height:450});
    // view.webContents.loadURL('https://baidu.com');

    // 监听关闭事件,把主窗口设置为null
    mainWindow.on('closed', () => {
        mainWindow = null;
    })
})

app.on('will-quit', function () {
    // 注销全局快捷键的监听
    globalShortcut.unregister('ctrl+e');
    globalShortcut.unregisterAll();
})

以上技术笔记就是今天学的主要内容,而且本文的内容在Electron开发中都会用到,希望大家练习一下,工作中用到了也可以回来翻看这篇笔记。

1. 本站所有免费资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!
2. 本站不保证所提供下载的免费资源的准确性、安全性和完整性,免费资源仅供下载学习之用!如有链接无法下载、失效,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或技术教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
5. 加入前端开发QQ群:565733884,我们大家一起来交流技术!
码云笔记 » 15. Electron注册全局快捷键

发表评论

提供最优质的资源集合

立即查看 了解详情