[随笔]Electorn 代码片段
2020-09-23 本文已影响0人
是ADI呀
// Tray
function createTray () {
const menubarPic = process.platform === 'darwin' ? `${__static}/menubar.png` : `${__static}/menubar-nodarwin.png`
tray = new Tray(menubarPic)
const contextMenu = // ...菜单
tray.on('right-click', () => { // 右键点击
window.hide() // 隐藏小窗口
tray.popUpContextMenu(contextMenu) // 打开菜单
})
tray.on('click', () => { // 左键点击
if (process.platform === 'darwin') { // 如果是 macOS
toggleWindow() // 打开或关闭小窗口
} else { // 如果是 windows
window.hide() // 隐藏小窗口
if (settingWindow === null) { // 如果主窗口不存在就创建一个
createSettingWindow()
settingWindow.show()
} else { // 如果主窗口在,就显示并激活
settingWindow.show()
settingWindow.focus()
}
}
})
}
// 鼠标左键点击事件
// 在 macOS 系统下,鼠标左键点击 Tray 的 icon 可能会出现配置菜单,也有可能会出现应用窗口。
// 在 windows 下,鼠标左键点击 Tray 的 icon 通常会出现应用的窗口。
// 鼠标右键点击事件
// 在 macOS 系统下,鼠标右键点击 Tray 的 icon 通常会出现配置菜单。
// 在 windows 系统下,同上。
// 拖拽
// titleBarStyle: 'hidden',
// -webkit-app-region: drag;
// user-select: none;
// .fake-title-bar {
// -webkit-app-region drag
// }
// .handle-bar {
// -webkit-app-region no-drag
// }
// mixin
export default {
mounted () {
t his.disableDragEvent()
},
methods: {
disableDragEvent () {
window.addEventListener('dragenter', this.disableDrag, false)
window.addEventListener('dragover', this.disableDrag)
window.addEventListener('drop', this.disableDrag)
},
disableDrag (e) {
const dropzone = document.getElementById('upload-area') // 这个是可拖拽的上传区
if (dropzone === null || !dropzone.contains(e.target)) {
e.preventDefault()
e.dataTransfer.effectAllowed = 'none'
e.dataTransfer.dropEffect = 'none'
}
}
},
beforeDestroy () {
window.removeEventListener('dragenter', this.disableDrag, false)
window.removeEventListener('dragover', this.disableDrag)
window.removeEventListener('drop', this.disableDrag)
}
}
// remote
this.$electron.remote.xxx
// shell
this.$electron.remote.shell.openExternal('https://github.com/Molunerfinn/PicGo')
// dialog
openDialog () {
this.$electron.remote.dialog.showMessageBox({
title: 'PicGo',
message: 'PicGo',
detail: `Version: ${pkg.version}\nAuthor: Molunerfinn\nGithub: https://github.com/Molunerfinn/PicGo`
})
}
if (!process.env.IS_WEB) Vue.use(require('vue-electron'))
聊天编辑器光标处插入表情
// 微信截图 dll
function handleCaptureScreen() {
return new Promise((resolve) => {
const { execFile } = require('child_process')
var screenWin = execFile('./static/PrintScr.exe')
screenWin.on('exit', function(code) {
let pngs = require('electron').clipboard.readImage().toPNG()
let imgData = new Buffer.from(pngs, 'base64')
let imgs = 'data:image/png;base64,' + btoa(new Uint8Array(imgData).reduce((data, byte) => data + String.fromCharCode(byte), ''))
resolve(imgs)
})
})
}
// 自定义最大最小化窗口
function minimizeWindow () {
const window = BrowserWindow.getFocusedWindow()
window.minimize()
}
function closeWindow () {
const window = BrowserWindow.getFocusedWindow()
window.close()
}