在实际的electron项目开发过程中,为了快读开发,有一些第三方软件例如:截图软件直接调用了现成的软件。那么electron如何调用.exe并传递相应参数呢?在网上找了一堆说的都是下载什么包,做什么操作,云里雾里。这里我就给大家说一下怎么去操作这个。
1. 使用 child_process 插件
child_process 是node的一个重要模块,熟悉shell脚本的同学,可以用它来完成很多有意思的事情,比如文件压缩、增量部署等,nodejs创建子进程有四种方法,分别是spawn、fork、exec、execFile。
而我们本次则使用的是它的第三种办法:exec
2. child_process.exec 创建一个shell,然后在shell里执行命令。执行完成后,将stdout、stderr作为参数传入回调方法。
例子如下:
执行成功,error为null;执行失败,error为Error实例。error.code为错误码,
stdout、stderr为标准输出、标准错误。默认是字符串,除非options.encoding为buffer
首先,我们需要在electron项目的主进程,main.js中引入这个模块
然后它的使用也必须是在主进程中进行,因为electron的主进程是支持node操作的。
如上代码,我们从渲染进程给主进程发送指令,并携带了一些参数,如上:ip,端口,电话号码,密码等参数。
当主进程接收到后,调用openScreenshot 方法打开 ScreenCapture.exe 软件并将参数传递进去
如上代码,我 们获取到了 存放ScreenCapture.exe的文件目录及地址,并设置参数。
然后使用.replace 进行替换,获取到了 ScreenCapture.exe 文件的path。
最后使用 exec 方法进行调用即可。
在使用exec的时候一定要注意,cwd 指的是当前.exe存放目录,一定要配置正确,否则可能软件能调通,但是工作环境会出现一些问题,导致.exe软件内部出现一些问题。
至于为什么.exe软件后面要跟参数,这个是需要大家去跟客户端程序员去对接的,看需不需要跟参数,每个参数都是什么,一定要记住,顺序是以客户端程序员排列的顺序为主。这样他那拿到的就是一个对象。