[随笔]Electorn 代码片段

简介: [随笔]Electorn 代码片段
// 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()
  }
  
目录
相关文章
|
10月前
|
SQL 开发框架 .NET
CodeSmith 简单使用和常用模板
CodeSmith 简单使用和常用模板
51 0
CodeSmith 简单使用和常用模板
|
JavaScript
第二章 网页基本代码
本章将会学习网页的基本代码了解使用。
64 1
第二章 网页基本代码
|
JavaScript 索引
WebApi入门第十二章(原生轮播图 )(完结)
WebApi入门第十二章(原生轮播图 )(完结)
110 0
WebApi入门第十二章(原生轮播图 )(完结)
C#Razor小笔记和某些细节
C#Razor小笔记和某些细节
125 0
|
JavaScript 前端开发 算法
每天学习使用代码片段(八)
在项目开发过程中,总觉得有更好的方式来组织代码,通过代码片段,间接的学习一些代码组织技巧。阅读开源代码,是开阔编码思维最快捷的方式,如果觉得内容能够带来点帮助,可以查看专栏《碎片时间学习JavaScript代码》其他内容,又或者有用到的需求片段,不妨在留言区留言。
142 0
|
编译器 C语言 数据安全/隐私保护
C++day12笔记无代码
C++day12笔记
327 0
|
Web App开发 前端开发 JavaScript