[随笔]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()
  }
  
上一篇下一篇

猜你喜欢

热点阅读