当前位置: 首页 > news >正文

electron常用方法

一,,electron设置去除顶部导航栏和menu

1,electron项目
在创建BrowserWindow实例的main.js页面添加frame:false属性

2,electron-vue项目
在src/main/index.js文件下找到创建窗口的方法(createWindow),在mainWindow中添加frame:false属性

添加前:frame:true

添加后,frame:false

  // 创建一个浏览器的窗口const mainWindow = new BrowserWindow({width: 900,height: 670,// 最小高度minHeight: 500,minWidth: 500,show: false,// 窗口大小是否可调整,false就是不可以调整// resizable: false,// 窗口初始化的位置x轴x: 100,// 窗口初始化位置y轴y: 100,// autoHideMenuBar: false,// 去除顶部标题以及菜单栏frame: false,// 隐藏标题,会导致窗口无法移动// titleBarStyle: 'hidden',...(process.platform === 'linux' ? { icon } : {}),webPreferences: {preload: join(__dirname, '../preload/index.js'),sandbox: false// nodeIntegration: true, // 不加,渲染进程会报错// contextIsolation: false // 为了安全性// // enableRemoteModule: true // 不加,渲染进程会报错}})

二:electron-vue设置一进页面全屏显示

解决前:fullscreen: false,

解决后:fullscreen: true,

三,解决electron设置可以拖动区域,模拟原来的顶部导航栏拖拽操作

1,设置了titleBarStyle: 'hidden'的弊端(隐藏标题(这种情况会导致窗口无法移动))

状态:  无标题,有:关闭、缩小、放大

解决办法1:(添加样式来解决)

1. 在渲染进程的dom中,添加样式:-webkit-app-region: drag;(会导致事件无法生效)

-webkit-app-region: drag;

2.给不需要拖拽的元素,取消-webkit-app-region: no-drag;(为了解决,添加后,会导致点击等事件无法触发,不生效)(给不需要拖动的地方添加,加了之后这个区域就无法拖动了)

-webkit-app-region: no-drag;

渲染进程添加样式来解决 在App.vue 中

<!-- 第一步 -->
<template><div class="app"><router-view></router-view></div>
</template><style>.app {position: absolute;left: 0;bottom: 0;right: 0;top: 0;-webkit-app-region: drag;}
</style>
<!-- 第二步在不需要拖动的地方: -->
<template><div class="Login">xxxxxxx,这个区域内的内容是无法拖动的</div>
</template>
<style>.Login{-webkit-app-region: no-drag;}
</style>

解决办法2(给主进程传参)

App.vue文件

<template><div class="app" @mousedown="mousedown"><router-view></router-view></div>
</template>
<script setup lang="ts">
import Versions from './components/Versions.vue'
import { ref } from 'vue'
let isKeyDown = ref(false)
let dinatesX = ref(0)
let dinatesY = ref(0)
const ipcHandle = () => window.electron.ipcRenderer.send('ping')
const mousedown = (e) => {isKeyDown.value = true// 获取鼠标移入到窗口时的x坐标dinatesX.value = e.x// 获取鼠标移入到窗口时的y坐标dinatesY.value = e.ydocument.onmousemove = (ev) => {console.log(ev,'ev')// ev就是获取鼠标移入到窗口时相对于屏幕的x坐标y坐标if (isKeyDown.value) {const x = ev.screenX - dinatesX.valueconst y = ev.screenY - dinatesY.value//给主进程传入坐标let data = {appX: x,appY: y}electron.ipcRenderer.invoke('custom-adsorption', data)}}document.onmouseup = (ev) => {isKeyDown.value = false}
}
</script>
<style>
html,
body,
#app {height: 100%;width: 100%;/* overflow: hidden; */margin: 0;padding: 0;
}
.app {/* position: absolute;left:0;bottom: 0;right: 0;top:0;-webkit-app-region: drag; */background-color: aqua;height: 100%;width: 100%;
}
</style>

主流程的index.js文件

  ipcMain.handle('custom-adsorption', (_, res) => {mainWindow.setPosition(res.appX, res.appY)})

四:electron窗口去除自带导航栏后自定义窗口最小化,窗口全屏,恢复窗口,关闭窗口按钮操作

1,App.vue

<template><div><el-button @click="emit">退出程序</el-button><el-button @click="clone">关闭当前窗口</el-button><el-button @click="min">最小化</el-button><el-button @click="max">最大化</el-button></div><div class="app" @mousedown="mousedown"><router-view></router-view></div>
</template>const max = () =>{
electron.ipcRenderer.invoke('max')
}
const min = () =>{electron.ipcRenderer.invoke('min')
}
const clone = () =>{electron.ipcRenderer.invoke('clone')
}
const emit = () =>{electron.ipcRenderer.invoke('emit')
}

 主进程

  ipcMain.handle('clone', () => {//关闭当前窗口mainWindow.close()})ipcMain.handle('min', () => {//最小化mainWindow.minimize()})ipcMain.handle('max', () => {//最大化if (mainWindow.isMaximized()) {//判断窗口是否最大化mainWindow.restore() //将窗口恢复为之前的状态} else {mainWindow.maximize() //将窗口全屏}})ipcMain.handle('emit', () => {//退出程序app.quit()})

相关文章:

electron常用方法

一&#xff0c;,electron设置去除顶部导航栏和menu 1&#xff0c;electron项目 在创建BrowserWindow实例的main.js页面添加frame&#xff1a;false属性 2&#xff0c;electron-vue项目 在src/main/index.js文件下找到创建窗口的方法&#xff08;createWindow&#xff09;&…...

【Spark】Spark Join类型及Join实现方式

如果觉得这篇文章对您有帮助&#xff0c;别忘了点赞、分享或关注哦&#xff01;您的一点小小支持&#xff0c;不仅能帮助更多人找到有价值的内容&#xff0c;还能鼓励我持续分享更多精彩的技术文章。感谢您的支持&#xff0c;让我们一起在技术的世界中不断进步&#xff01; Sp…...

meta llama 大模型一个基础语言模型的集合

LLaMA 是一个基础语言模型的集合&#xff0c;参数范围从 7B 到 65B。我们在数万亿个 Token 上训练我们的模型&#xff0c;并表明可以专门使用公开可用的数据集来训练最先进的模型&#xff0c;而无需诉诸专有的和无法访问的数据集。特别是&#xff0c;LLaMA-13B 在大多数基准测试…...

JAVA爬虫获取1688关键词接口

以下是使用Java爬虫获取1688关键词接口的详细步骤和示例代码&#xff1a; 一、获取API接口访问权限 要使用1688关键词接口&#xff0c;首先需要获取API的使用权限&#xff0c;并了解接口规范。以下是获取API接口的详细步骤&#xff1a; 注册账号&#xff1a;在1688平台注册一…...

操作系统——内存管理

1、什么是虚拟内存&#xff1f;它是如何实现的&#xff1f;虚拟内存与物理内存之间有什么关系&#xff1f; 虚拟内存是操作系统提供的一种内存管理机制&#xff0c;它使程序认为自己拥有连续的内存空间&#xff0c;但实际上内存可能被分散存储在物理内存和磁盘交换空间中。 虚…...

android studio 模拟器不能联网?

模拟器路径&#xff1a; C:\Users\Administrator\AppData\Local\Android\Sdk\emulator\emulator.exe.关闭所有AVD设备实例 导航至&#xff1a; C:\Users\userName\AppData\Local\Android\Sdk\emulator查看模拟器名称 AdministratorDESKTOP-6JB1OGC MINGW64 ~/AppData/Local/…...

CTF-WEB: 目录穿越与模板注入 [第一届国城杯 Ez_Gallery ] 赛后学习笔记

step1 验证码处存在逻辑漏洞,只要不申请刷新验证码就一直有效 字典爆破得到 admin:123456 step2 /info?file../../../proc/self/cmdline获得 python/app/app.py经尝试,读取存在的目录时会返回 A server error occurred. Please contact the administrator./info?file.…...

数据结构6.4——归并排序

基本思想&#xff1a; 归并排序是建立在归并操作上的一种有效的排序算法&#xff0c;该算法是采用分治法的一个非常典型的应用。将已有的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子序列有序&#xff0c;再使子序列段间有序。若将两个有序表合并成一个…...

【html 常用MIME类型列表】

本表仅列出了常用的MIME类型&#xff0c;完整列表参考文档。 浏览器通常使用 MIME 类型&#xff08;而不是文件扩展名&#xff09;来确定如何处理 URL&#xff0c;因此 Web 服务器在响应头中添加正确的 MIME 类型非常重要。 如果配置不正确&#xff0c;浏览器可能会曲解文件内容…...

Linux之vim编辑器

vi编辑器是所有Unix及linux系统下标准的编辑器&#xff0c;类似于Windows系统下的记事本。很多软件默认使用vi作为他们编辑的接口。vim是进阶版的vi&#xff0c;vim可以视为一种程序编辑器。 前言&#xff1a; 1.文件准备 复制 /etc/passwd文件到自己的目录下&#xff08;不…...

【工具介绍】可以批量查看LableMe标注的图像文件信息~

在图像处理和计算机视觉领域&#xff0c;LabelMe是一个广泛使用的图像标注工具&#xff0c;它帮助我们对图像中的物体进行精确的标注。但是&#xff0c;当标注完成后&#xff0c;我们常常需要一个工具来批量查看这些标注信息。 今天&#xff0c;我要介绍的这款exe程序&#xf…...

2024年山西省第十八届职业院校技能大赛 (高职组)“信息安全管理与评估”赛项规程

2024年山西省第十八届职业院校技能大赛 &#xff08;高职组&#xff09;“信息安全管理与评估”赛项规程 一、赛项名称 赛项名称&#xff1a;信息安全管理与评估 英文名称&#xff1a;Information Security Management and Evaluation 赛项组别&#xff1a;高职教师组 赛项归属…...

STM32完全学习——STemWin的移植小插曲

一、移植编译的一些问题 新版的STemWin的库没有区别编译器&#xff0c;只有一些这样的文件&#xff0c;默认你将这些文件导入到KEIL中&#xff0c;然后编译就会有下面的错误。 ..\MEWIN\STemWin\Lib\STemWin_CM4_wc16.a(1): error: A1167E: Invalid line start ..\MEWIN\STe…...

Java——IO流(下)

一 (字符流扩展) 1 字符输出流 (更方便的输出字符——>取代了缓冲字符输出流——>因为他自己的节点流) (PrintWriter——>节点流——>具有自动行刷新缓冲字符输出流——>可以按行写出字符串&#xff0c;并且可通过println();方法实现自动换行) 在Java的IO流中…...

avue-crud 同时使用 column 与 group 的问题

场景一&#xff1a;在使用option 中的column 和 group 进行表单数据新增操作时&#xff0c;进行里面的控件操作时&#xff0c;点击后卡死问题&#xff0c;文本没问题 其它比如下拉&#xff0c;单选框操作&#xff0c;当删除 column 中的字段后&#xff0c; group 中的可以操作 …...

深入解析 Pytest 中的 conftest.py:测试配置与复用的利器

在 Pytest 测试框架中&#xff0c;conftest.py 是一个特殊的文件&#xff0c;用于定义测试会话的共享配置和通用功能。它是 Pytest 的核心功能之一&#xff0c;可以用于以下目的&#xff1a; 【主要功能】 1、定义共享的 Fixture &#xff08;1&#xff09;conftest.py 文件可…...

JAVA |日常开发中Websocket详解

JAVA &#xff5c;日常开发中Websocket详解 前言一、Websocket 概述1.1 定义1.2 优势 二、Websocket 协议基础2.1 握手过程2.2 消息格式2.3 数据传输方式 三、Java 中使用 Websocket3.1 Java WebSocket API&#xff08;JSR - 356&#xff09;3.2 第三方库&#xff08;如 Tyrus&…...

Typora教程

目录 一、下载安装 二、激活 1.激活 2.解决激活提示窗口 一、下载安装 去官网下载Typora安装&#xff0c;我的是1.9.5版本 二、激活 1.激活 根据路径找到Typora/resources/page-dist/static/js 使用记事本打开LicenseIndex文件&#xff0c;如下图&#xff1a; 按住快捷…...

泛微E9常见API保姆级详解!!!!

前言 在泛微前端开发过程中&#xff0c;虽然大部分是对流程以及流程逻辑的调整&#xff0c;但是还是会有一些小的个性化需求是需要借助JS来实现的。 比如&#xff1a;对同一组数据&#xff0c;前后变化不一样时&#xff0c;需要对这组变化后的数据进行标红处理&#xff1b;对提…...

UniApp配置使用原子化tailwindcss

参考视频 创建项目 新建项目选择uniapp - vue版本这里我选择3 - 点击创建即可 创建完成后&#xff0c;如果是要编译到小程序的项目则可以先将项目运行到小程序打开了 初始化package.json 执行 npm init -y安装和配置 安装 npm i -D tailwindcss postcss autoprefixer # 安…...

终极英雄联盟换肤工具:R3nzSkin国服特供版完整使用教程

终极英雄联盟换肤工具&#xff1a;R3nzSkin国服特供版完整使用教程 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 想要在英雄联盟国服免费体验所有皮肤…...

如何在电脑上完美运行3DS游戏:Citra模拟器5步安装指南

如何在电脑上完美运行3DS游戏&#xff1a;Citra模拟器5步安装指南 【免费下载链接】citra A Nintendo 3DS Emulator 项目地址: https://gitcode.com/GitHub_Trending/ci/citra 想要在电脑上重温任天堂3DS的经典游戏吗&#xff1f;Citra模拟器作为目前最优秀的开源3DS模拟…...

Promises/A+完全指南:深入理解JavaScript异步编程标准规范

Promises/A完全指南&#xff1a;深入理解JavaScript异步编程标准规范 【免费下载链接】promises-spec An open standard for sound, interoperable JavaScript promises—by implementers, for implementers. 项目地址: https://gitcode.com/gh_mirrors/pr/promises-spec …...

深入解析vsync:基于版本化状态流的高并发同步原语

1. 项目概述&#xff1a;一个被低估的同步利器如果你在开发中经常需要处理跨进程、跨线程的数据同步&#xff0c;或者为状态管理中的竞态条件头疼&#xff0c;那么nicepkg/vsync这个项目很可能就是你一直在寻找的“瑞士军刀”。乍一看这个标题&#xff0c;它像是一个普通的版本…...

AI赋能Anki:基于LLM与Prompt工程的智能制卡技能全解析

1. 项目概述&#xff1a;当Anki遇上AI&#xff0c;一个卡片技能的革命如果你和我一样&#xff0c;是个重度Anki用户&#xff0c;那你一定经历过这样的时刻&#xff1a;面对一本厚厚的教科书&#xff0c;或者一篇几十页的论文&#xff0c;想要把里面的核心知识点做成记忆卡片&am…...

构建智能增量更新插件:Softer-Delta算法与工程实践

1. 项目概述与核心价值最近在折腾一些自动化工作流&#xff0c;发现很多场景下&#xff0c;我们都需要一个能“聪明”地处理文件差异、生成补丁&#xff0c;并且能无缝集成到现有工具链里的插件。这让我想起了之前用过的一个叫pear-plugin的工具&#xff0c;它挂在Softer-delta…...

Seraphine终极指南:免费开源英雄联盟智能助手完整教程

Seraphine终极指南&#xff1a;免费开源英雄联盟智能助手完整教程 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 在英雄联盟的激烈对局中&#xff0c;你是否曾因错过对局接受而懊恼&#xff1f;是否在BP阶段…...

独家解密:ElevenLabs匈牙利语模型训练数据源(含布达佩斯大学语料库授权细节与音系学标注规范)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs匈牙利语语音模型的技术定位与战略意义 ElevenLabs 匈牙利语语音模型并非简单的地方语言适配&#xff0c;而是其多语言零样本语音合成&#xff08;Zero-Shot Voice Cloning&#xff09;架构在…...

AI应用统一管理:aiclublight轻量级启动器部署与配置指南

1. 项目概述与核心价值最近在折腾一些AI相关的本地化应用&#xff0c;发现了一个挺有意思的项目&#xff0c;叫aiclublight。这名字听起来有点“俱乐部之光”的意思&#xff0c;但它的核心其实是一个轻量级的AI应用启动器。简单来说&#xff0c;它就像是一个为你电脑上各种AI模…...

国产LDO CN86L028实战:解决图像传感器电源噪声,兼容BL8062

1. 项目概述与核心需求解析最近在折腾一个老式录像机的修复与升级项目&#xff0c;目标很明确&#xff1a;提升其图像采集的稳定性。这台设备在运行中&#xff0c;画面时不时会出现条纹干扰&#xff0c;声音里也夹杂着微弱的底噪&#xff0c;尤其是在电源波动较大的环境下&…...