electron桌面端开发-打开指定软件和文件

electron桌面端开发

现在越来越多的软件开发已经趋向于简单化,桌面端开发已经不在依赖之前的java、c++等主流技术,目前基于node的开发越来越广泛。功能点也越来越多元化。


文章目录

  • electron桌面端开发
  • 前言
  • 一、打开文件的方式?
  • 二、exec使用步骤
    • 1.路径处理
    • 2.方法使用
  • 二、spawn使用步骤
    • 1.路径处理
    • 2.方法使用
  • 总结


前言

测试,用electron开发中打开指定的软件,但是要指定安装的软件的路径进行打开,以及指定软件支持的格式的文件进行操作,否则会出现错误,通常和计算机交互必须使用ipc.invoke封装的相关方法调用计算机的功能。

一、打开文件的方式?

打开文件的方式有两种exec和spawn,但是本人比较推荐实用spawn,因为当前插件比较实用大数据的打开以及查看,相关性能请对照下图进行选择
在这里插入图片描述

二、exec使用步骤

1.路径处理

代码如下(示例):传输的路径必须要有双引号

// 自动为路径添加引号(exec,需要添加双引号路径)
const escapePath=(exePath) =>{if (exePath.includes(' ')) {return `"${exePath}"`; // 包裹路径}return exePath; // 不包含空格时直接返回
}

2.方法使用

代码如下(示例):


let exePath = '"D:\\Program Files (x86)\\ArcGIS\\Desktop10.8\\bin\\ArcMap.exe"'let filePath= '"E:\\tifProjects\\data\\测试文件.mxd"'const params = {argsData:exePath,filePath:filePath}//调用中间方法可以询问博主ipc.invoke(ipcApiRoute.file.openExec,params)//调用的基础插件const {exec, spawn} = require("node:child_process");const {argsData,filePath} = argsconst command = `${argsData} ${filePath}`;try {通过exec启动命令exec(command, (error, stdout, stderr) => {if (error) {console.error(`执行失败: ${error.message}`);return;}if (stderr) {console.error(`stderr: ${stderr}`);return;}console.log(`输出: ${stdout}`);});}

二、spawn使用步骤

1.路径处理

代码如下(示例):传输的路径不需要双引号

let exePath = 'D:\\Program Files (x86)\\ArcGIS\\Desktop10.8\\bin\\ArcMap.exe'let filePath= 'E:\\tifProjects\\data\\测试文件.mxd'const params = {argsData:exePath,filePath:filePath}//调用中间方法可以询问博主ipc.invoke(ipcApiRoute.file.openExec,params)

2.方法使用

代码如下(示例):

  //调用的基础插件const {exec, spawn} = require("node:child_process");openExec(args) {const {argsData,filePath} = argstry {// 通过 spawn 启动命令// ArcMap 路径const arcmap = spawn(argsData, [filePath], {windowsHide: true});arcmap.stdout.on('data', (data) => {console.log(`stdout: ${data}`);});arcmap.stderr.on('data', (data) => {console.error(`stderr: ${data}`);});arcmap.on('close', (code) => {console.log(`子进程退出,代码 ${code}`);});arcmap.on('error', (err) => {console.error('启动失败:', err);});} catch (err) {return { success: false, message: err.message }}}

总结

使用 spawn,参数隔离、执行稳定,特别适合打开带路径、文件名、中文字符的软件和文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/77082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ShenNiusModularity项目源码学习(17:ShenNius.Admin.Mvc项目分析-2)

ShenNiusModularity项目的后台管理主页面如下图所示,该页面为ShenNius.Admin.Mvc项目的Views\Home\Index.cshtml,使用的是layuimini后台模板(参考文献2),在layuimini的GitHub主页中提供有不同样式的页面模版链接&#…

SpringBoot 与 Vue3 实现前后端互联全解析

在当前的互联网时代,前后端分离架构已经成为构建高效、可维护且易于扩展应用系统的主流方式。本文将详细介绍如何利用 SpringBoot 与 Vue3 构建一个前后端分离的项目,展示两者如何通过 RESTful API 实现无缝通信,让读者了解从环境搭建、代码实…

portainer.io篇

Portainer‌是一个轻量级的容器管理工具,支持Docker、Kubernetes、Docker Swarm、ACI和Nomad等多种平台。它提供了一个直观的Web界面,使用户能够轻松地管理和监控容器,包括创建、启动、停止、删除容器,以及查看容器的日志和配置信…

Dockerfile 文件常见命令及其作用

Dockerfile 文件包含一系列命令语句,用于定义 Docker 镜像的内容、配置和构建过程。以下是一些常见的命令及其作用: FROM:指定基础镜像,后续的操作都将基于该镜像进行。例如,FROM python:3.9-slim-buster 表示使用 Pyt…

Android Studio开发知识:从基础到进阶

引言 Android开发作为移动应用开发的主流方向之一,曾吸引了无数开发者投身其中。然而,随着市场饱和和技术迭代,当前的Android开发就业形势并不乐观,竞争日益激烈。尽管如此,掌握扎实的开发技能仍然是脱颖而出的关键。本…

大表查询的优化方案

‌单表优化‌: ‌字段选择‌:尽量使用TINYINT、SMALLINT、MEDIUMINT作为整数类型,而非INT;如果字段值非负,可以使用UNSIGNED。对于字符串字段,使用枚举或整数代替字符串类型,使用TIMESTAMP而非D…

常见MQ及类MQ对比:Redis Stream、Redis Pub/Sub、RocketMQ、Kafka 和 RabbitMQ

常见MQ及类MQ对比 基于Grok调研 Redis Stream、Redis Pub/Sub、RocketMQ、Kafka 和 RabbitMQ 关键点: Redis Pub/Sub 适合简单实时消息,但不持久化,消息可能丢失。Redis Stream 提供持久化,适合需要消息历史的场景,但…

DAPP实战篇:使用ethersjs连接智能合约并输入地址查询该地址余额

本系列目录 专栏:区块链入门到放弃查看目录-CSDN博客文章浏览阅读400次。为了方便查看将本专栏的所有内容列出目录,按照顺序查看即可。后续也会在此规划一下后续内容,因此如果遇到不能点击的,代表还没有更新。声明:文中所出观点大多数源于笔者多年开发经验所总结,如果你…

库magnet使用指南

Magnet 多线程控制库使用指南 目录 库功能概述环境配置核心类与接口基础使用示例代码生成工具高级功能与改进建议完整示例代码常见问题解答 https://blink.csdn.net/details/1872803?spm1001.2014.3001.5501 1. 库功能概述 Magnet 库提供以下核心功能: 多线程…

SpringCloud-快速通关(三)

SpringCloud-快速通关(一) SpringCloud-快速通关(二) SpringCloud-快速通关(三) SpringCloud-快速通关(三) 七、Seata - 分布式事务7.1、环境搭建7.1.1、简介7.1.2、环境搭建7.1.3、seata-server7.1.4、微服务配置7.1.5、测试7.2、事务模式7.2.1、AT模式7.2.2、XA模式…

STM32 TDS+温度补偿

#define POLAR_CONSTANT (513385) /* 电导池常数,可通过与标准TDS测量仪对比计算反推 */ #define TDS_COEFFICIENT (55U) /* TDS 0.55 * 电子传导率*/void TDS_Value_Conversion() {u32 ad0;u8 i;float compensationCoefficient;float compens…

数据分析实战案例:使用 Pandas 和 Matplotlib 进行居民用水

原创 IT小本本 IT小本本 2025年04月15日 18:31 北京 本文将使用 Matplotlib 及 Seaborn 进行数据可视化。探索如何清理数据、计算月度用水量并生成有价值的统计图表,以便更好地理解居民的用水情况。 数据处理与清理 读取 Excel 文件 首先,我们使用 pan…

离线环境下docker启动springboot项目

Docker linux 离线部署springboot 搭建dcoker环境 1. 首先在有网络的机器上下载Docker的离线安装包&#xff1a; - 访问 https://download.docker.com/linux/static/stable/x86_64/ - 下载对应版本的 docker-<version>.tgz 文件 2. 将下载的安装包传输到目标Linux机器上…

分布式专题-Redis Cluster集群运维与核心原理剖析

一. 哨兵集群与Redis Cluster 架构异同&#xff1a; redis单机内存不会超过10g&#xff0c;如果太大的话bgsave命令的话对单节点压力过大。 节点多了&#xff0c;之间的通信也会非常缓慢。 redis集群模式下对从节点是没有读取操作的&#xff0c;只在主节点进行读取操作。 哨…

使用 Node.js、Express 和 React 构建强大的 API

了解如何使用 Node.js、Express 和 React 创建一个强大且动态的 API。这个综合指南将引导你从设置开发环境开始&#xff0c;到集成 React 前端&#xff0c;并利用 APIPost 进行高效的 API 测试。无论你是初学者还是经验丰富的开发者&#xff0c;这篇文章都适合你。 今天&#…

智慧声防:构筑海滨浴场安全屏障的应急广播系

海滨浴场是夏季旅游的热门目的地&#xff0c;但潮汐变化、离岸流、突发天气、溺水事故等安全隐患时刻威胁着游客安全。传统的安全管理依赖人工瞭望和喊话&#xff0c;存在覆盖范围有限、响应速度慢等问题。“智慧声防”应急广播系统&#xff0c;通过智能化、网络化、多场景协同…

Redis之缓存穿透

Redis之缓存穿透 文章目录 Redis之缓存穿透一、什么是缓存穿透&#xff1f;二、缓存穿透常见的解决方案1. 缓存空对象&#xff08;Null Caching&#xff09;2. 布隆过滤器&#xff08;Bloom Filter&#xff09;​3. 互斥锁&#xff08;Mutex Lock&#xff09;​4. 接口层校验5.…

【蓝桥杯】颜色平衡树

思路 颜色平衡树&#xff0c;即子树中的节点颜色均匀分布。所以要确认一个子树是否为颜色平衡树&#xff0c;需要得到它的所有节点的颜色&#xff0c;也就是要深搜它所有的子树。 这个想法就很标准的启发式合并了&#xff0c;何为启发式合并&#xff1f;简单来说&#xff0c;…

自动化测试工具playwright中文文档-------14.Chrome 插件

介绍 注意 插件仅在以持久化上下文启动的 Chrome/Chromium 浏览器中工作。请谨慎使用自定义浏览器参数&#xff0c;因为其中一些可能会破坏 Playwright 的功能。 以下是获取位于 ./my-extension 的 Manifest v2 插件背景页面句柄的代码示例。 from playwright.sync_api imp…

让 Python 脚本在后台持续运行:架构级解决方案与工业级实践指南

让 Python 脚本在后台持续运行&#xff1a;架构级解决方案与工业级实践指南 一、生产环境需求全景分析 1.1 后台进程的工业级要求矩阵 维度开发环境要求生产环境要求容灾要求可靠性单点运行集群部署跨机房容灾可观测性控制台输出集中式日志分布式追踪资源管理无限制CPU/Memo…