需求:

electron软件启动与关闭要同时开启与关闭一个本地数据转发服务

解决:

工具包:handleWindowsService.ts

const exec = require('child_process').exec;const windowServiceStart = function (path: string) { // path必须为绝对路径exec(`start ${path}`, function (err: any, stdout: any, stderr: any) {if (err) {throw err;}})
}const windowsServiceStop = function (port: any) { // 服务进程的端口号let netstat_command = 'netstat -aon | findstr \":' + port + '\"';console.log('查询服务进程...' + netstat_command);exec(netstat_command, { maxBuffer: 5000 * 1024 }, (err: any, stdout: any, stderr: any) => {if (err) {console.log('查询服务进程异常:' + err);return false;}let line = stdout.split('\n')[0]; //第一行信息console.log('查询成功,进程信息:' + line);let p = line.trim().split(/\s+/);let address = p[1];let pid = p[4];if (address.split(':')[1] != port || !pid || pid.length == 0) {console.log('获取进程id失败');return false;}let taskkill_command = 'taskkill /F /pid ' + pid;console.log('关闭服务...' + taskkill_command);exec(taskkill_command, { maxBuffer: 5000 * 1024 }, function (err: any, stdout: any, stderr: any) {if (err) {console.log('关闭服务异常:' + err);return false;}console.log('服务关闭成功');return true;});});
};export {windowServiceStart,windowsServiceStop
}

配置项:connect.config.ts

const dataServerUrl = "C:\\Users\\86155\\Desktop\\test\\DataPublish\\DataServer.exe";
const dataServerPort = 7771;export { wsConnectUrl, connectUrl, dataServerUrl, dataServerPort };

主进程使用:main.ts

import { windowServiceStart, windowsServiceStop } from './modules/toolsFn/handleWindowsService'
import { dataServerUrl, dataServerPort } from "./modules/config/connect.config";// 启动数据转发服务
window.onload = function () {windowServiceStart(dataServerUrl);
};// 关闭数据转发服务
window.onbeforeunload = function () {windowsServiceStop(dataServerPort);
};

效果预览:

本地服务名为:DataServer
打开软件前的任务管理器:

打开软件后的任务管理器:

关闭软件后的任务管理器:

测试:

可以使用打开windows计算器的方式进行功能测试。
windows计算器的绝对路径:
C:\\Windows\\System32\\calc.exe'

问题解决:

node启动、关闭windows服务相关推荐

  1. oracle启动的服务有哪些,启动/关闭oracle服务有三种方式

    启动oracle服务有三种方式:1 从控制面板 2 使用MS-DOS命令 3 通过Oracle Administration Assistant for WindowsNT -通过控制面板启动orac ...

  2. 启动/关闭oracle服务有三种方式

    为了节约内存,可在不需要使用oracle时,将之服务关闭.需要时,再开启服务.但必须,一定要注意关闭时的次序,还有开启时的顺序. 开启顺序: net start OracleOraDb11g_home ...

  3. 关闭所有oracle服务,启动/关闭oracle服务有三种方式

    启动oracle服务有三种方式:1 从控制面板 2 使用MS-DOS命令 3 通过Oracle Administration Assistant for WindowsNT -通过控制面板启动orac ...

  4. Linux 和Windows 下启动 关闭 Redis 服务

    1.linux 下启动 关闭 redis 找到redis的根目录,可用如下指令 whereis redis 找到redis的根目录 进入 .进入后发现只有conf文件没有server文件(*启动时需要 ...

  5. oracle服务未启动失败,windows服务未启动导致 ORA-12560和RMAN-00554错误 | 信春哥,系统稳,闭眼上线不回滚!...

    今天,有人在群里问RMAN-00554.RMAN-04005.ORA-12560错误,如下: C:Usersstream>rman target / 恢复管理器: Release 11.2.0. ...

  6. 关闭windows自带杀毒软件Windefend命令,命令行关闭windows服务

    net stop windefend 关闭windows任意服务 net stop *** 关键点 谁启动的服务谁才有权限关 别忘记windows系统级服务很多都是system权限控制

  7. windows10启动/关闭MySQL服务的两种方法

    最近安装MySQL取消了开机自启动,需要手动开启,这里记录下开启方法: 1.命令方式 右击,注意是右击桌面左下角的开始菜单,在弹出的菜单中选择Windows PowerShell(管理员) 选择普通的 ...

  8. 关闭windows自带杀毒软件Windows defender命令,命令行关闭windows服务

    net stop windefend 关闭windows任意服务 net stop *** 关键点 谁启动的服务谁才有权限关 别忘记windows系统级服务很多都是system权限控制 禁用Defen ...

  9. win10设置Mongodb启动为Windows服务自启动

    1.首先安装好MongoDB,目录如图所示 2.如上图,创建data目录,在data目录中创建db目录和log目录 3.在log目录中创建mongodb.log文件,空文件就行,要确保后缀名是.log ...

最新文章

  1. 基于SpringJDBC 实现关键功能-EntityOperation
  2. 1.SoapUI接口测试--创建项目
  3. 红橙Darren视频笔记 仿QQ步数计数view 画笔的使用
  4. Matlab Tricks(二十三)—— 保存图像到 pdf
  5. 如何使用postman测试服务器的性能,如何用Postman测试API
  6. SQL:postgresql中合并多个查询结果UNION (ALL)
  7. 计算机的典型网络地址 特殊0.0.0.0 本机127.0.0.1 内网192.168.xxx.xxx 172.xxx.xxx.xxx 10.xxx.xxx.xxx 外网
  8. Atitit Seed-Filling种子填充算法attilax总结
  9. python 爬取国内高匿代理ip(西刺代理)整站DOWN下来
  10. BFS(广度优先算法)
  11. 【服务器数据恢复】服务器raid5磁盘阵列分区丢失的数据恢复案例
  12. reversed python_python字典reversed
  13. K40自动重启/自动关机/时间系统混乱
  14. 全系T*镀膜认证镜头 vivo X70系列夜拍体验再升级
  15. 人生一定要知道的十大“博弈”!
  16. 数据库表结构导出(编写数据库设计文档)
  17. Java开发你需要了解的那些事,面试必会
  18. 同济大学计算机何良华,同济主持或合作完成的8项目分获教育部高等学校科学研究优秀成果奖一、二等奖...
  19. 如何与安道拓Adient建立 EDI连接
  20. java计算机毕业设计高考报考指南网站源码+mysql数据库+系统+lw文档+部署

热门文章

  1. 愿你走出半生,归来仍是少年
  2. 【雕爷学编程】MicroPython动手做(10)——零基础学MaixPy之神经网络KPU
  3. QT图片转Base64数据 与 Base64转图片
  4. 高精度PSR 恒流PFC控制器QX9931
  5. openDS LDAP openLDAP
  6. golang 设置GOPROXY
  7. 关于TCP全双工模式的解释
  8. 基于Deep Sort的视频车流量计数(一)
  9. 百趣代谢组学文献分享埃博拉病毒发病机制及组合生物标志物的发现
  10. 打造一双 Crypto OG 和运动达人都喜欢的鞋 — STEPN创始人分享 | Moonshot Mafia 预告...