[随笔]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()
  }
  
目录
相关文章
|
缓存 监控 网络协议
【华为HCIP | 职业认证考试】821每日一刷
【华为HCIP | 职业认证考试】821每日一刷
1809 0
【华为HCIP | 职业认证考试】821每日一刷
|
9月前
|
自然语言处理
高效团队的秘密:7大团队效能模型解析
3分钟了解7大团队效能模型,有效提升团队绩效。
819 7
高效团队的秘密:7大团队效能模型解析
|
关系型数据库 MySQL 分布式数据库
PolarDB操作报错合集之在执行语句时遇到语法错误,是由什么导致的
在使用阿里云的PolarDB(包括PolarDB-X)时,用户可能会遇到各种操作报错。下面汇总了一些常见的报错情况及其可能的原因和解决办法:1.安装PolarDB-X报错、2.PolarDB安装后无法连接、3.PolarDB-X 使用rpm安装启动卡顿、4.PolarDB执行UPDATE/INSERT报错、5.DDL操作提示“Lock conflict”、6.数据集成时联通PolarDB报错、7.编译DN报错(RockyLinux)、8.CheckStorage报错(源数据库实例被删除)、9.嵌套事务错误(TDDL-4604)。
254 1
|
Unix Linux Shell
不同RTOS中POSIX接口的实现差异
本文探讨了在开发实时应用时使用POSIX API来实现跨平台和可移植性的策略。
282 1
不同RTOS中POSIX接口的实现差异
|
Linux C++
经验分享:C++ error:‘syscall’ was not declared in this scope
经验分享:C++ error:‘syscall’ was not declared in this scope
567 3
|
消息中间件 存储 缓存
高性能、高可靠性!Kafka的技术优势与应用场景全解析
**Kafka** 是一款高吞吐、高性能的消息系统,擅长日志收集、消息传递和用户活动跟踪。其优点包括:零拷贝技术提高传输效率,顺序读写优化磁盘性能,持久化保障数据安全,分布式架构支持扩展,以及客户端状态维护确保可靠性。在实际应用中,Kafka常用于日志聚合、解耦生产者与消费者,以及实时用户行为分析。
497 3
|
Python
Python pkgutil基础使用说明
pkgutil是Python的标准库中的一个模块,提供了一系列与包(Package)相关的工具函数,例如动态加载包、递归遍历包内的子模块等。在本篇教程中,我们将带你详细了解pkgutil模块的主要功能及使用方法。
263 2
|
存储
【洛谷 P2141】[NOIP2014 普及组] 珠心算测验 题解(集合+多重循环)
**NOIP2014普及组的珠心算测验题要求参赛者找出给定集合中多少个数可表示为其他两个不同数的和。输入含n个正整数,输出满足条件的数的个数。样例输入4个数,输出2,因1+2=3且1+3=4。代码利用集合存储和,遍历所有数对组合,当找到匹配和时插入集合,最后输出集合大小。注意数据规模为n≤100,数不超过10,000。**
366 0
|
算法 C#
winform车牌识别源码(纯算法)
使用C#和Winform开发的纯算法车牌识别系统,无需依赖外部框架。通过去雾、灰度化、均衡化、中值滤波等步骤实现车牌定位和识别。包含详细步骤及源码,适合学习研究。演示视频:[BV1yq4y1a7cb](https://www.bilibili.com/video/BV1yq4y1a7cb/?spm_id_from=333.337.search-card.all.click&vd_source=6d6d1b4c92d36f8d9ca8a23a286bae20)。