dialog-对话框

  • 显示用于打开和保存文件、警报等的本机系统对话框
  • 触发事件,出现对话框-其实就是磁盘文件
  • 选择一个或多个文件
const {app, BrowserWindow, dialog} = require('electron')
win.webContents.on('did-finish-load', () =. {
dialog.showOpenDialog({
buttonLabel: '选择',//可以改,确定按钮的名字
defaultPath: app.getPath('desktop'),//本地应用的路径,可以写music
properties: ['multiSelections'多选, 'createDirectory'创建, 'openFile', 'openDirectory'打开文件]
}).then((result)=. {
//console.log(result.filepaths)//undefind
//console.log(result)获取路径

})
})
  • 获取存储文件
dialog.showSaveDialog({}).then(result =. {
console.log(result.filePath)
})
  • 弹出信息窗口(接近于原生,操作系统自带,不是我们写的)
  • 可改为中文
    const answers = ['Yes', 'No', 'Maybe']按钮的值
    dialog.showMessageBox({
    title: 'Message Box',//标题
    message: 'Please select an option',//解析作用
    detail: 'Message details.',
    buttons: answers
    }).then(({response}) =. {
    console.log(`User selected: ${answers[response]}`)获取按钮值
    })
  • 具体位置
const path = require('path')
const { app, BrowserWindow, ipcMain, dialog } = require('electron')
const WinState = require('electron-win-state').default
// 主进程
const createWindow = () => {
const winState = new WinState({
defaultWidth: 800,
defaultHeight: 600
// other winState options, see below
})
const win = new BrowserWindow({
...winState.winOptions,
backgroundColor: '#6435c9',
webPreferences: {
// dirname当前入口文件的绝对物理路径+相对路径
preload: path.resolve(__dirname, './preload.js')
}
})
const wc = win.webContents
//全部加载完毕
wc.on('did-finish-load', () => {
console.log('Conent fully loaded')
})
//dom加载完毕
wc.on('dom-ready', () => {
console.log('DOM Ready')
})
//鼠标右键,保存图片
wc.on('context-menu', (e, params) => {
// console.log(params)
//-------------------------------------------------------
// dialog
// .showOpenDialog({
// buttonLabel: '选择',
// defaultPath: app.getPath('desktop'),
// properties: [
// 'multiSelections',
// 'createDirectory',
// 'openFile',
// 'openDirectory'
// ]
// })
// .then((result) => {
// // console.log(result.filepaths)
// console.log(result)
// })
//-------------------------------------------------------
// dialog.showSaveDialog({}).then((result) => {
// console.log(result.filePath)
// })
//-------------------------------------------------------
const answers = ['Yes', 'No', 'Maybe']
dialog
.showMessageBox({
title: 'Message Box', //标题
message: 'Please select an option', //解析作用
detail: 'Message details.',
buttons: answers
})
.then(({ response }) => {
console.log(`User selected: ${answers[response]}`)
})

//-------------------------------------------------------
// wc.executeJavaScript(`alert('${params.selectionText}')`)
})
wc.openDevTools()
win.loadFile('./index.html')
winState.manage(win)
}

快捷键-系统快捷键(键盘)

globalShortcut.register()

  • 快捷键:定义键盘快捷键
  • 系统快捷键:在应用程序没有焦点时,监听键盘事件
  • 快捷键使用register方法在globalShortcut模块中注册
  • globalShortcut模块可以在操作系统中注册/注销全局快捷键, 以便可以为操作定制各种快捷键。
  • 注意: 快捷方式是全局的; 即使应用程序没有键盘焦点, 它也仍然在持续监听键盘事件。 在应用程序模块发出 ready
    事件之前, 不应使用此模块。
// globalShortcut.register('G', () => {
// console.log('user')
// })
//----------------------- globalShortcut.register('CommandOrControl+Y', () => {
console.log('user')
globalShortcut.unregister('CommandOrControl+Y')
})
  • 具体位置
const path = require('path')
const {
app,
BrowserWindow,
ipcMain,
dialog,
globalShortcut
} = require('electron')
const WinState = require('electron-win-state').default
// 主进程
const createWindow = () => {
const winState = new WinState({
defaultWidth: 800,
defaultHeight: 600
// other winState options, see below
})
const win = new BrowserWindow({
...winState.winOptions,
backgroundColor: '#6435c9',
webPreferences: {
// dirname当前入口文件的绝对物理路径+相对路径
preload: path.resolve(__dirname, './preload.js')
}
})
const wc = win.webContents
//全部加载完毕
wc.on('did-finish-load', () => {
console.log('Conent fully loaded')
})
//dom加载完毕
wc.on('dom-ready', () => {
console.log('DOM Ready')
})
//鼠标右键,保存图片
wc.on('context-menu', (e, params) => {
// console.log(params)
//-------------------------------------------------------
// dialog
// .showOpenDialog({
// buttonLabel: '选择',
// defaultPath: app.getPath('desktop'),
// properties: [
// 'multiSelections',
// 'createDirectory',
// 'openFile',
// 'openDirectory'
// ]
// })
// .then((result) => {
// // console.log(result.filepaths)
// console.log(result)
// })
//-------------------------------------------------------
// dialog.showSaveDialog({}).then((result) => {
// console.log(result.filePath)
// })
//-------------------------------------------------------
const answers = ['Yes', 'No', 'Maybe']
dialog
.showMessageBox({
title: 'Message Box', //标题
message: 'Please select an option', //解析作用
detail: 'Message details.',
buttons: answers
})
.then(({ response }) => {
console.log(`User selected: ${answers[response]}`)
})

//-------------------------------------------------------
// wc.executeJavaScript(`alert('${params.selectionText}')`)
})
wc.openDevTools()
win.loadFile('./index.html')
winState.manage(win)
// globalShortcut.register('G', () => {
// console.log('user')
// })
//--------------------------------
globalShortcut.register('CommandOrControl+Y', () => {
console.log('user')
globalShortcut.unregister('CommandOrControl+Y')
})
}