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

electron 鼠标事件

版本:"electron": "^22.3.27",实现一个在windows下图片点击右键,使用electron打开的功能。

一、注册表操作

注册表工具类

const cp = require("child_process");
const { app } = require('@electron/remote')
export default {regKey:'',//菜单一级目录名basePath:app.getPath('exe'),getSh(code){return '"'+this.basePath+' '+code+' %1"'},runShell(exec,callback) {cp.exec(exec, function(err,stdout,stderr){if(err){console.info(err);return}console.log(stdout)callback(stdout)});},//查询注册表queryRegGroup(callback) {//查询组是否存在let sh='reg Query HKEY_CLASSES_ROOT\\*\\shell /v '+this.regKeythis.runShell(sh,callback)},//查询添加注册表一级菜单openReg(callback) {//查询组是否存在let sh='reg Query HKEY_CLASSES_ROOT\\*\\shell /v '+this.regKeylet js=thiscp.exec(sh, function(err,stdout,stderr){if(err){js.addRegGroup(callback)return}callback()});},//添加注册表1级addRegGroup(callback) {//查询组是否存在let sh='reg Add HKEY_CLASSES_ROOT\\*\\shell\\'+this.regKey+' /ve /t REG_DWORD /d 0 /f'let js=thisthis.runShell(sh,()=>{js.addGroupNasp(callback)})},//添加注册表子项(用于扩展二级菜单)addGroupNasp(callback){let sh='reg Add HKEY_CLASSES_ROOT\\*\\shell\\' + this.regKey +' /v SubCommands /t REG_DWORD /d 0 /f'this.runShell(sh,callback)},//添加二级菜单及索引addGroupAndItem(that,regValue,callback){let js=thislet sh='reg Query HKEY_CLASSES_ROOT\\*\\shell\\'+this.regKey+' /v SubCommands -s'this.runShell(sh,(innValue)=>{if(innValue.includes(regValue.label)){callback()return}js.addNaspValue(that,regValue,callback,innValue)})},//添加二级索引addNaspValue(that,regValue,callback,innValue){let js=thislet val=this.getNaspValue(that,regValue,innValue)let sh='reg Add HKEY_CLASSES_ROOT\\*\\shell\\'+this.regKey+ ' /v SubCommands /t REG_SZ /d "'+val +'" /f'this.runShell(sh,()=>{js.addItemData(regValue,callback)})},updateNaspValue(val,callback){let sh='reg Add HKEY_CLASSES_ROOT\\*\\shell\\'+this.regKey+ ' /v SubCommands /t REG_SZ /d "'+val +'" /f'this.runShell(sh,()=>{callback()})},getNaspValue(that,regValue,innValue){let res=''for(let i=0;i<that.options.length;i++){if(innValue.includes(that.options[i].label)){res+=that.options[i].label+';'}}if(res==''){res=regValue.label}else{res+=regValue.label}return res},//添加二级菜单addItemData(regValue,callback){let js=thisthis.delItemData(regValue.label,()=>{//二级菜单let sh='reg add HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CommandStore\\shell\\'+regValue.label+ '  /ve /t REG_DWORD /d 0 /f 'js.runShell(sh,()=>{//事件脚本控制let sh='reg add HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CommandStore\\shell\\'+regValue.label+'\\command'+ '  /ve /t REG_SZ /d '+regValue.sh+' /f 'js.runShell(sh,()=>{callback()})})})},//先删除项async delItemData(code,callback){let sh='reg delete HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CommandStore\\shell\\'+code+ ' /f'await cp.exec(sh, function(err,stdout,stderr){callback()});},//删除右键菜单closeReg(that,callback){let js=thislet sh='reg delete HKEY_CLASSES_ROOT\\*\\shell\\' + this.regKey + ' /f'cp.exec(sh, function(err,stdout,stderr){for(let i=0;i<that.options.length;i++){js.delItemData(that.options[i].label,()=>{})}callback(stdout)});}
}

注:%1是指当前文件的路径。

二、主进程操作

//使用:initArgs()windows[mainWindow.id]=mainWindowrequire('@electron/remote/main').initialize()require('@electron/remote/main').enable(mainWindow.webContents)function initArgs(){if(process.env.NODE_ENV != 'development'){let progressArgv =process.argvif(progressArgv.length<2){return}if(!progressArgv[2]||progressArgv[2]==''){return;}let message=screenShotUtil.screenshotViewParams(progressArgv[1]+'?path='+progressArgv[2])screenShotUtil.openPage(message,windows)}
}

在主进程创建窗体时监听注册表的返回的值,包含自定义参数和文件路径。

相关文章:

electron 鼠标事件

版本&#xff1a;"electron": "^22.3.27"&#xff0c;实现一个在windows下图片点击右键&#xff0c;使用electron打开的功能。 一、注册表操作 注册表工具类 const cp require("child_process"); const { app } require(electron/remote) e…...

网络安全第一次作业(ubuntuan安装nginx以及php部署 and sql注入(less01-08)))

ubuntuan安装nginx以及php部署 1.安装依赖包 rootadmin123-virtual-machine:~# apt-get install gcc libpcre3 libpcre3-dev zliblg zliblg-dev openssl libssl-dev2.安装nginx 到https://nginx.org/en/download.html下载nginx 之后将压缩包通过xtfp传输到ubuntu的/usr/loc…...

【OpenHarmony4.1 之 U-Boot 2024.07源码深度解析】017 - init_sequence_f 各函数源码分析(一)

【OpenHarmony4.1 之 U-Boot 2024.07源码深度解析】017 - init_sequence_f 各函数源码分析(一) 一、setup_mon_len():配置 gd->mon_len 监控长度二、fdtdec_setup() :设备树初始化,配置 gd->fdt_blob 指向uboot镜像末尾的 device tree三、【RK3568未跑】trace_early…...

Mojo AI编程语言(十七)跨平台开发:应用广泛适配

目录 1. Mojo语言简介 2. 跨平台开发的挑战 3. Mojo语言的跨平台特性 3.1 编译器支持 3.2 标准库支持 3.3 抽象层 4. 跨平台开发的最佳实践 4.1 避免平台特定代码 4.2 使用依赖管理工具 4.3 测试覆盖率 5. 高级跨平台开发技巧 5.1 使用容器 5.2 持续交付 5.3 性能…...

Python面试题:结合Python技术,如何使用Astropy进行天文数据处理

Astropy 是一个用于天文学研究的 Python 库&#xff0c;它提供了处理天文数据的多种工具和函数。以下是一些使用 Astropy 进行天文数据处理的示例&#xff1a; 安装 Astropy 首先&#xff0c;需要确保已安装 Astropy&#xff0c;可以使用以下命令进行安装&#xff1a; pip i…...

Jpa-多表关联-OneToOne

Jpa-多表关联-OneToOne 准备JoinColumnOneToOne属性targetEntitycascade*PERSISTMERGEREMOVEREFRESH orphanRemovalfetchoptionalMappedBy* OneToOne在 hibernate中用于对表与表之间进行维护关联 准备 import com.alibaba.fastjson.JSON; import jakarta.persistence.*; impor…...

zdpy+vue3+onlyoffice文档系统实战上课笔记 20240805

上次 上次计划 1、最近文档表格完善 2、实现登录功能 3、新建文件&#xff0c;复制文件&#xff0c;删除文件 4、其他 目前任务&#xff1a;最近文档表格完善 1、在名称前面&#xff0c;渲染这个文档的图标 2、大小的基本的单位是kb&#xff0c;超过1024kb则换成mb&#xff0…...

【Linux 从基础到进阶】Linux 内核参数调优

Linux 内核参数调优 引言 内核参数调优是提升 Linux 系统性能和稳定性的重要手段。通过合理配置和优化内核参数,可以显著改善系统资源利用率和响应速度。本文将介绍内核参数的调优方法,并提供适用于 CentOS 和 Ubuntu 系统的具体示例。 1. 内核参数简介 内核参数是控制 L…...

【Java数据结构】---泛型

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 &#xff0c;Java 欢迎大家访问~ 创作不易&#xff0c;大佬们点赞鼓励下吧~ 文章目录 包装类装箱和拆箱泛型泛型…...

Java Lambda表达式总结(快速上手图解)

Java Lambda表达式总结&#xff08;快速上手详解&#xff09;-CSDN博客https://blog.csdn.net/m0_66070037/article/details/140912566?spm1001.2014.3001.5501...

【算法模板】图论:Tarjan算法求割边割点

概念 割边&#xff08;Bridge 或 Cut Edge&#xff09; 定义&#xff1a; 在一个无向连通图中&#xff0c;如果删除某条边后&#xff0c;图不再连通&#xff08;即任意两点之间不能相互到达&#xff09;&#xff0c;则称该边为割边。割边也被称为桥&#xff0c;因为它像桥梁…...

如何在IDEA上使用JDBC编程【保姆级教程】

目录 前言 什么是JDBC编程 本质 使用JDBC编程的优势 JDBC流程 如何在IEDA上使用JDBC JDBC编程 1.创建并初始化数据源 2.与数据库服务器建立连接 3.创建PreparedStatement对象编写sql语句 4.执行SQL语句并处理结果集 executeUpdate executeQuery 5.释放资源 前言 在…...

linux web系统安装常见问题解决,租房系统为案例

Warning: require(): open_basedir restriction in effect. 一、执行文件权限 网站目录下 open_basedir增加执行路径 二、文件夹权限放行 三、安装基础环境 composer install 四、数据合并 php think migrate:run 20200402094148 AdminUser: migrating 20200402094148 A…...

Linux驱动开发—平台总线模型详解

文章目录 1.平台总线介绍1.1平台总线模型的组成部分1.2平台总线模型的优势 2.使用平台总线模型开发驱动2.1注册platform设备2.2注册platform驱动2.3效果演示 1.平台总线介绍 Linux 平台总线模型&#xff08;Platform Bus Model&#xff09;是一种设备驱动框架&#xff0c;用于…...

说一下网络层,传输层,数据链路层做什么的,之间的关系?

网络层主要负责为数据包选择最佳路径&#xff0c;将数据从源主机传输到目标主机。它的关键任务包括路由选择、拥塞控制和网络互联等。通过网络层的功能&#xff0c;不同网络之间能够实现通信和数据传输。 传输层的作用是在源端和目的端之间提供可靠或不可靠的端到端的数据传输…...

解锁AI新纪元:Milvus Cloud与Zilliz Cloud的高可用之道

在当今数字化时代,系统的持续稳定运行与数据的即时访问性已成为衡量技术服务质量的关键指标。面对复杂多变的运行环境,包括电力波动、网络故障乃至人为操作失误等不可预见因素,数据库系统的高可用性(High Availability, HA)成为了保障业务连续性的重要基石。特别是在大数据…...

svn安装

579 ​​yum install subversion 580 rpm -qa|grep subversion 581 yum -y install subversion 582 rpm -ql subversion 583 /usr/bin/svnversion --version 584 mkdir /data/svnrepos 585 svnadmin create /data/svnrepos/abc 586 svnadmin create /data/svnrepos/gzss 587 cd…...

【隐私计算篇】混淆电路之深入浅出

入门隐私计算的阶段&#xff0c;一般都会涉及对于混淆电路的学习&#xff0c;这是因为混淆电路是多方安全计算中的基础密码原语&#xff0c;也是隐私保护中重要的技术。为了帮助更好地理解混淆电路的原理&#xff0c;今天对其进行原理以及相关优化手段进行解析和分享。 1. 混淆…...

基于GRU神经网络的微博分类预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 gru的原理 GRU神经网络微博分类 结果分析 展望 参考论文 背影 传统的方法微博分类预测准确率低,为提高精度,本文用gru进行预测 摘要 LSTM原理,GRU原理,MATALB编程gru的微博分类预测 LSTM的基本定义 LSTM是一种含有LST…...

LVS-DR模式集群:案例与概念

DR模式&#xff08;直接路由&#xff09; 概念 Direct Routing&#xff0c;简称DR模式采用半开放式的网络结构&#xff0c;与TUN模式的结构类似&#xff0c;但内网服务器并不是分散在各地&#xff0c;而是与调度器位于同一个物理网络负载调度器与内网服务器通过本地网络连接&a…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

Java数组Arrays操作全攻略

Arrays类的概述 Java中的Arrays类位于java.util包中&#xff0c;提供了一系列静态方法用于操作数组&#xff08;如排序、搜索、填充、比较等&#xff09;。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序&#xff08;sort&#xff09; 对数组进行升序…...

高分辨率图像合成归一化流扩展

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 1 摘要 我们提出了STARFlow&#xff0c;一种基于归一化流的可扩展生成模型&#xff0c;它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流&#xff08;TARFlow&am…...