C# Process调用外部程序的实现
前言
使用C#调用外部程序,一种是通过Process类,一种是通过命令行,本文主要说一下使用C#中的Process类调用外部程序的方式。
过程:
1. 创建Process对象
2. 配置启动选项(输入、输出等)
3. 切换工作目录
4. 设置外部程序名
5. 设置传入参数
6. 启动外部程序
7. 等待外部程序结束
8. 关闭外部程序
过程
创建Process对象
配置启动选项
切换工作目录
1、工作目录:程序运行时其启动文件以及配置文件等文件的所在目录。比如在桌面上选中QQ,右键单击“打开文件所在位置”,这个目录就是QQ运行起来后的工作目录。
我们当前编写的C#程序运行后也有自己的工作目录,因此如果要在C#中调用外部程序,最好在调用前将当前工作目录切换为外部程序的工作目录。
2、查看当前工作目录
以下两种代码都可以打印出当前程序的工作目录
System.IO.Directory.GetCurrentDirectory();
该函数以sting类型返回当前工作目录,可以使用控制台打印当前工作目录。
AppDomain.CurrentDomain.BaseDirectory;
AppDomain:应用程序域,以上语句可以获取当前应用程序域的基目录,也就是 应用程序名.exe所在目录,一般这个目录也是默认的工作目录。
AppDomain.CurrentDomain.BaseDirectory;
是sting类型,因此也可以使用控制台打印出来。
这两种方法打印工作目录的区别在于:
第一种方法打印的是工作目录,是动态的(工作目录可更改)
第二种方法打印的是当前AppDomain的基目录,只要AppDomain没被更改,打印出来的始终是 当前AppDomain的基目录,也就是应用程序名.exe所在目录
因此,可以在启动外部程序前更改工作目录为外部程序的工作目录,在外部程序执行结束后再使用AppDomain.CurrentDomain.BaseDirectory;
将工作目录恢复为原始基目录以保证后续程序的正常执行。
3、切换当前工作目录为外部程序工作目录
比如当前C#所在程序的路径为 C:/Deskop/C#/bin/Debug/
所调用的外部程序目录在 C:/Deskop/C#/bin/Debug/NASM/
nasm.exe在C:/Deskop/C#/bin/Debug/NASM/nasm.exe
这里就可以写成
4、恢复原始工作目录
在外部程序执行结束后需要将工作目录切换回来,借助AppDomain.CurrentDomain.BaseDirectory
设置外部程序名
切换工作目录后,一般外部程序名就在新的目录目录下。
设置传入参数
光有程序不行,还需要指定让这个程序执行什么操作,这个操作就通过传入参数传递。
比如在nasm下要将其工作目录下的MySourcesCode目录下的demo02.asm编译链接生成4.obj文件(生成在MySourcesCode目录下),就需要打开nasm,输入如下命令
nasm是程序名,后面的就是nasm的传入参数,也就是我们需要设置的东西。
程序启动、等待执行、关闭
完整代码
环境及运行截图
外部程序
外部程序所在目录
外部程序源文件_目标文件所在目录
C#调用外部程序后生成的目标文件
到此这篇关于C# Process调用外部程序的实现的文章就介绍到这了,更多相关C# Process调用外部程序内容请搜索得得之家以前的文章希望大家以后多多支持得得之家!