小工具知识网

当前位置: 首页 > 行业知识 > C# Web应用调用EXE文件的一些实践

行业知识

C# Web应用调用EXE文件的一些实践

2026-11-11 09:00:09 来源:互联网转载

目录

需求

范例运行环境

可执行文件的设计

调用可执行文件方法

RunExecuteFile

RunShellExecuteFile

方法的区别

WEB调用举例

小结


需求

最近同事使用Python开发了一款智能文字转语音的程序,经讨论部署在WINDOWS环境服务器下,因此需要生成目标为可执行程序文件,即EXE文件。需要在WEB应用程序里进行调用,并传递相关参数。

该测试效果如下图:

打开AI语音合成配置如下:

 

如图配置中,可以选择朗读人角色,音量大小,音调高低和控制语速选项, 此款应用将在合成音视频中起到关键作用。 

范例运行环境

操作系统: Windows Server 2019 DataCenter

.net版本: .netFramework4.7.1 或以上

开发工具:VS2019  C#

可执行文件的设计

可执行文件 edgetts.exe 实现文字转语音功能,其说明如下:

序号参数类型值说明
1-filename字符存在的文件名

word docx文档

txt文本文件

md markdown文档

2-s角色固定值主播的角色值
3-p字符固定值音调高低
4-r1位小数数值0.1开始的倍速默认为1.0
5-v整数0到100音量大小

调用方法:

edgetts.exe 要转换的文件名   [-s 声音参数 -p 音调参数 -r速度参数 -v 音量参数]

调用举例:

edgetts d:\tts\test.txt

edgetts d:\tts\test.txt  -s yunyang  -p default -r 1.0  -v 100

调用说明:

1、除要转换的文件名为必要参数外,其他参数均有默认值

2、转换程序不要放在根目录下

3、转换程序在转换文本相同路径下生成同名的mp3文件

4、转换程序需要连接外网

调用可执行文件方法

需要引用 using System.Diagnostics; 

程序集 System.Diagnostics.Process.dll 提供对本地和远程进程的访问权限并能够启动和停止本地系统进程。

包括两种方法,方法包括需要调用的可执行文件名和可提供的参数:

RunExecuteFile

 public string RunExecuteFile(string filename,string arguments)        {            Process prc = new Process();            try            {                prc.StartInfo.FileName = filename;                prc.StartInfo.Arguments = arguments;                prc.StartInfo.UseShellExecute = false;                //输入输出重定向                prc.StartInfo.RedirectStandardError = true;                prc.StartInfo.RedirectStandardInput = true;                prc.StartInfo.RedirectStandardOutput = true;                prc.StartInfo.CreateNoWindow = false;                prc.Start();                //获得输出                string output = prc.StandardOutput.ReadLine();                return output;            }            catch (Exception ex)            {                if (!prc.HasExited)                {                    prc.Close();                }                return ex.Message.ToString();            }            return "";        }

RunShellExecuteFile

 

public string RunShellExecuteFile(string filename, string arguments){            System.Diagnostics.Process prc = new System.Diagnostics.Process();            prc.StartInfo.FileName = filename;            prc.StartInfo.Arguments = arguments;            prc.StartInfo.UseShellExecute = true;            prc.StartInfo.CreateNoWindow = true;            prc.Start();            prc.WaitForExit();            return "";}

方法的区别

主要区别在于 UseShellExecute 的属性的 true 或 false 。该属性获取或设置指示是否使用操作系统 shell 启动进程的值。

如果应在启动进程时使用 shell,则为 true ;如果直接从可执行文件创建进程,则为  false 。 .NET Framework 应用默认值为 true 。为 true 的时候表示可以尝试调用一切可以调用的程序,但不限于EXE文件。

WEB调用举例

根据前面AI语音合成图示,可编写如下后端调用示例代码:

protected void Button1_Click(object sender, EventArgs e)    {        string tts = "D:\tts\edgetts.exe";        string tts_para = " -s " + x_speaker.SelectedValue;        if (x_volume.Text != "")        {            tts_para += " -v " + x_volume.Text;        }        if (x_rate.Text != "")        {            tts_para += " -r " + x_rate.Text;        }        if (x_pitch.SelectedValue != "default")        {            tts_para += " -p " + x_pitch.SelectedValue;        }        string cdir = Request.PhysicalApplicationPath + "\test\ai\";        string[] allfs = Directory.GetFiles(cdir);        for (int i = 0; i 语音合成成功!", "'点这里播放'", "ok");        }        else        {            debug.Text = rv;            layer.open("未找到文件!" + tts+ txtfile + tts_para, "'确定'", "ok");        }    }public string SaveToFile(string PathFile,string filecontent,bool append,System.Text.Encoding encodtype,int buffersize){string rv="";StreamWriter df=new StreamWriter (PathFile,append,encodtype,buffersize);try{df.Write(filecontent);df.Close();}catch(Exception e){rv=e.Message;df.Close();}finally{df.Close();}return rv;}//SaveToFile Function

前端代码示例如下:

             



朗读人角色 晓晓 晓依 云健 云溪 云霞 云扬 音量 音调 default x-low low medium high x-high 语速 1x

小结

在实际的应用中,调用 RunShellExecuteFile 方法更加通用一些,本示例调用 RunExecuteFile没有成功,因协作需要,我们需要尝试多种方法进行解决,而不是要在第一时间要求其它团队更改设计。

layer弹出框的代码请参考我的上传资源:layer 移动版弹出层组件的改造版

调用成功后会显示如下图:

 

如图我们看到使用了 H5 的 video 控件进行了演示播放。

再次感谢您的阅读,欢迎讨论指教!

上一篇:elephant英文名怎么读?

下一篇:揭秘微商源码下载,优质资源助你轻松开启微商事业之旅!