📜  电子-定义快捷方式

📅  最后修改于: 2020-10-25 10:57:42             🧑  作者: Mango


我们通常会记住每天在PC上使用的所有应用程序的某些快捷方式。为了使您的应用程序感觉直观并易于用户访问,必须允许用户使用快捷方式。

我们将使用globalShortcut模块在我们的应用程序中定义快捷方式。请注意,加速器是可以包含多个修饰符和键码(由+字符组合)的字符。这些加速器用于定义整个应用程序中的键盘快捷键。

让我们考虑一个示例并创建一个快捷方式。为此,我们将遵循对话框示例,其中使用了打开对话框来打开文件。我们将注册一个CommandOrControl + O快捷方式以打开该对话框。

我们的main.js代码将保持与以前相同。因此,创建一个新的main.js文件,并在其中输入以下代码-

const {app, BrowserWindow} = require('electron')
const url = require('url')
const path = require('path')
const {ipcMain} = require('electron')

let win

function createWindow() {
   win = new BrowserWindow({width: 800, height: 600})
   win.loadURL(url.format ({
      pathname: path.join(__dirname, 'index.html'),
      protocol: 'file:',
      slashes: true
   }))
}

ipcMain.on('openFile', (event, path) => {
   const {dialog} = require('electron')
   const fs = require('fs')
   dialog.showOpenDialog(function (fileNames) {
         
      // fileNames is an array that contains all the selected
      if(fileNames === undefined)
         console.log("No file selected")
      else
         readFile(fileNames[0])
   })

   function readFile(filepath){
      fs.readFile(filepath, 'utf-8', (err, data) => {
         if(err){
            alert("An error ocurred reading the file :" + err.message)
            return
         }
         
         // handle the file content
         event.sender.send('fileData', data)
      })
   }
})

app.on('ready', createWindow)

每当我们的主进程从渲染器进程收到“ openFile”消息时,该代码就会弹出打开对话框。早些时候,只要运行应用程序,就会弹出此对话框。现在让我们将其限制为仅在按CommandOrControl + O时打开。

现在创建一个具有以下内容的新index.html文件-


      File read using system dialogs
   
   
   
      

Press CTRL/CMD + O to open a file.

我们注册了一个新的快捷方式并传递了一个回调,该回调将在我们每次按下此快捷方式时执行。我们可以在不需要快捷键时注销快捷键。

现在,一旦打开应用程序,我们将收到消息,提示您使用我们刚定义的快捷方式打开文件。

打开对话框

通过允许用户为定义的操作选择自己的快捷方式,可以使这些快捷方式可自定义。