Electron - 系统快捷键 和 主进程、渲染进程间的通信

系统快捷键

在应用程序没有键盘焦点时,监听键盘事件。
进程:主进程
globalShortcut 模块可以在操作系统中注册/注销全局快捷键, 以便可以为操作定制各种快捷键。

文档系统快捷键

使用

const { app, globalShortcut } = require('electron')

app.whenReady().then(() => {
  // Register a 'CommandOrControl+X' shortcut listener.
  const ret = globalShortcut.register('CommandOrControl+X', () => {
    console.log('CommandOrControl+X is pressed')
  })

  if (!ret) {
    console.log('registration failed')
  }

  // 检查快捷键是否注册成功
  console.log(globalShortcut.isRegistered('CommandOrControl+X'))
})

app.on('will-quit', () => {
  // 注销快捷键
  globalShortcut.unregister('CommandOrControl+X')

  // 注销所有快捷键
  globalShortcut.unregisterAll()
})
// 渲染进程可以这样使用
const { globalShortcut } = require('electron').remote;
globalShortcut.register('CommandOrControl+Q', () => {
    console.log('CommandOrControl+Q is pressed')
})

ipcMain 和 ipcRenderer

ipcMain
从主进程到渲染进程的异步通信。
进程:主进程
ipcMain 是一个 EventEmitter 的实例。 当在主进程中使用时,它处理从渲染器进程(网页)发送出来的异步和同步信息。 从渲染器进程发送的消息将被发送到该模块。

ipcRenderer
从渲染器进程到主进程的异步通信。
进程: Renderer
ipcRenderer 是一个 EventEmitter 的实例。 你可以使用它提供的一些方法从渲染进程 (web 页面) 发送同步或异步的消息到主进程。 也可以接收主进程回复的消息。

文档ipcMainipcRenderer

使用

// index.html
	<div>
        <h2>进程通信</h2>
        <button onclick="sendMsg()">发送给渲染进程</button>
    </div>
    
// main.js
ipcMain.on('asynchronous-message', (event, arg) => {
    console.log(arg) 
    event.reply('asynchronous-reply', '主进程消息')
})
...
// 主动和渲染进程说话
    // setTimeout(() => {
    //     mainWindow.webContents.send('asynchronous-reply', '主进程主动的消息')
    // }, 6000);

// renderer.js
function sendMsg() {
    ipcRenderer.send('asynchronous-message', '渲染进程消息')
}
ipcRenderer.on('asynchronous-reply', (event, arg) => {
    console.log(arg) 
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值