关于 electron 的一些其他的操作
快捷键 globalShortcut
globalShortcut 模块可以在操作系统中注册/注销全局快捷键, 以便可以为操作定制各种快捷键。
注意: 快捷方式是全局的; 即使应用程序没有键盘焦点, 它也仍然在持续监听键盘事件。 在 app 模块的 ready 事件就绪之前,这个模块不能使用。
注册快捷键使用示例:
globalShortcut.register('Ctrl+g', () => {
console.log('gggggg')
})
此时按下Ctrl + g 即可看到log此时我们就能看到bash打印出了gggggg。但是这时由于这个事件是个全局的事件, 所以我们可以这样处理,在窗口被选中时注册这个事件,在窗口失焦时注销这个事件,那么就可以处理全局的问题了
注销快捷键示例:
// 注销快捷键
globalShortcut.unregister('Ctrl+X')
// 注销所有快捷键
globalShortcut.unregisterAll()
菜单 Menu
Menu 这个类的作用就是创建原生应用菜单和上下文菜单,我们正常窗口的顶部是自带一个菜单的,我们可以通过 Menu 这个类去修改才菜单,具体使用可以点击查看 使用文档 ,这里我们简单介绍一下,首先我们新建一个mainMenu.js作为菜单模板:
const menuTemplate = [ { label: '文件', submenu: [ { label: '新建', accelerator: 'CmdOrCtrl+N', click: () => { console.log('new file') }, }, ],
},
{
label: '编辑',
submenu: [
{
label: '复制',
accelerator: 'CmdOrCtrl+C',
selector: 'copy:',
},
{
label: '粘贴',
accelerator: 'CmdOrCtrl+V',
selector: 'paste:',
},
],
},
]
module.exports = menuTemplate
接着我们就可以在main.js中直接使用了
const menuTemplate = require('./mainMenu')
const menu = Menu.buildFromTemplate(menuTemplate)
Menu.setApplicationMenu(menu)
剪切板 clipboard
剪切板大家应该很熟悉了, 在系统剪贴板上执行复制和粘贴操作。支持读写
const { clipboard } = require('electron')
clipboard.writeText('Example string', 'selection')
console.log(clipboard.readText('selection'))
抓取屏幕 desktopCapturer
Electron中的desktopCapturer模块可以获取用户桌面或应用窗口的图像,常见的用途就是截屏。
desktopCapturer提供的主要API如下:
- desktopCapturer.getSources(options) - 获取可用的屏幕或窗口源,返回Source[]
- Source - 源信息对象,包含id、name、thumbnail等信息
- navigator.webkitGetUserMedia - 获取被选源的实时流
常见的用法示例:
-
获取屏幕和窗口源
const sources = await desktopCapturer.getSources({ types: ['screen', 'window'] })
-
选择一个源并获取流
const stream = await navigator.webkitGetUserMedia({ audio: false, video: { mandatory: { chromeMediaSource: 'desktop', chromeMediaSourceId: sources[0].id } } })
-
将流拷贝成图片即实现截屏
const buffer = stream.getVideoTracks()[0].getPhoto() // 设置图片编码
fs.writeFile('screenshot.png', buffer, ...) // 保存图片
所以通过desktopCapturer,可以实现选择屏幕区域进行截图、录屏、实现屏幕共享等功能。它提供了对桌面图像源的访问