使用Web前端技术开发桌面应用---Electron注册全局快捷键

news/2024/7/19 14:02:04 标签: js, 前端, electron

码字不易,有帮助的同学希望能关注一下我的微信公众号:Code程序人生,感谢!代码自用自取。

在这里插入图片描述

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

注册快捷键

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

var  globalShortcut = electron.globalShortcut

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

var electron = require('electron') 

var app = electron.app   
var  globalShortcut = electron.globalShortcut

var BrowserWindow = electron.BrowserWindow;  

var mainWindow = null ;  
app.on('ready',()=>{
    mainWindow = new BrowserWindow({width:800,height:600})  

    globalShortcut.register('ctrl+e',()=>{

        mainWindow.loadURL('https://baidu.com')  
    })

    mainWindow.loadFile('index7.html')  

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

})

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

检测快捷键是否注册成功

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

let isRegister = globalShortcut.isRegistered ? 'Register Success' : 'Register Fail';
console.log(isRegister);

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

注销快捷键

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

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

})

在这里插入图片描述
在这里插入图片描述

这期学的内容就到这里了,这节课的内容在Electron开发中都会用到。


有微信小程序课设、毕设需求联系个人QQ:505417246

关注下面微信公众号,可以领取微信小程序、Vue、TypeScript、前端、uni-app、全栈、Nodejs、Python等实战学习资料
最新最全的前端知识总结和项目源码都会第一时间发布到微信公众号,请大家多多关注,谢谢

在这里插入图片描述


http://www.niftyadmin.cn/n/1576503.html

相关文章

Linux防火墙iptables规则设置(转)

iptables命令是Linux上常用的防火墙软件&#xff0c;是netfilter项目的一部分。可以直接配置&#xff0c;也可以通过许多前端和图形界面配置。 一、语法 iptables(选项)(参数) 二、选项 -t<表>&#xff1a;指定要操纵的表&#xff1b; -A&#xff1a;向规则链中添加条目…

使用Web前端技术开发桌面应用---Electron剪贴板事件的使用

码字不易&#xff0c;有帮助的同学希望能关注一下我的微信公众号&#xff1a;Code程序人生&#xff0c;感谢&#xff01;代码自用自取。 在开发中我们经常会遇到给用户一个激活码&#xff0c;然后让用户复制粘贴的情况&#xff0c;这时候就需要用到clipboard模块&#xff0c;也…

JVM线程与Linux内核线程的映射[转]

Linux从内核2.6开始使用NPTL &#xff08;Native POSIX Thread Library&#xff09;支持&#xff0c;但这时线程本质上还轻量级进程。 Java里的线程是由JVM来管理的&#xff0c;它如何对应到操作系统的线程是由JVM的实现来确定的。Linux 2.6上的HotSpot使用了NPTL机制&#xf…

『前端优化』—— Vue中避免滥用this去读取data中数据

码字不易&#xff0c;有帮助的同学希望能关注一下我的微信公众号&#xff1a;Code程序人生&#xff0c;感谢&#xff01;代码自用自取。 前言 在Vue中&#xff0c;data选项是个好东西&#xff0c;把数据往里一丢&#xff0c;在一个Vue组件中任何一个地方都可以通过this来读取d…

嵌套的异步回调

今天被一个问题纠结了2个小时。一開始失败的代码大概是这种&#xff1a; dispatch_group_t group dispatch_group_create();while([rs next]){dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{[httpHelper getSecure:url completionHandler:^(NSDictionary* …

CSS3实现超好看的加载动画

码字不易&#xff0c;有帮助的同学希望能关注一下我的微信公众号&#xff1a;Code程序人生&#xff0c;感谢&#xff01;代码自用自取。 在任何项目都中会出现需要加载的数据的场景&#xff0c;大多数都会给一个loading的交互提示&#xff0c;这期我们就做一个超级好看炫酷的加…

看看你那张熬完夜的脸

任何事情都可以等到明天&#xff0c;唯独身体和健康&#xff0c;不会等。 01 去年有段时间&#xff0c;因为工作调整的缘故&#xff0c;我的上班时间变成从下午五点到凌晨零点。 每天很有趣的一个现象是&#xff0c;别人下班回家的时候&#xff0c;我逆着人流&#xff0c;奔向单…

原生JavaScript进阶训练---重写map方法

码字不易&#xff0c;有帮助的同学希望能关注一下我的微信公众号&#xff1a;Code程序人生&#xff0c;感谢&#xff01;代码自用自取。 之前发过一期重写forEach方法的文章&#xff0c;然后更新了多期Electron的内容&#xff0c;现在Electron的内容暂时更新完了&#xff0c;我…