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.pswp.cn/bicheng/77082.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77082.shtml
英文地址,請注明出處:http://en.pswp.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…