C#调用外部程序
2022/6/20 1:21:56
本文主要是介绍C#调用外部程序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、C#调用外部程序
在C#中,通过Process
类来进行进程操作。 Process
类在System.Diagnostics
包中,具体使用如下所示:
Process.Start(processName)
对于比较复杂的调用,例如给被调用程序传入参数,以及从被调用程序获取数据,此时需要设定Process
的StartInfo
参数,具体设定如下所示:
static void Main(string[] args) { try { var process = new Process() { StartInfo = new ProcessStartInfo() { // 启动程序名称 FileName = "Hk.Console.Callee.exe", // 对启动程序所传递的参数。如果参数包含空格则使用"\"\""取消空格转义 Arguments = "123 \"C:\\Program Files (x86)\\JetBrains\\ETW Host\"", // 是否展示被调用程序 CreateNoWindow = false, // 是否需要系统shell调用程序 UseShellExecute = false, // 打开文本输出 RedirectStandardOutput = true, // 打开错误输出 RedirectStandardError = true, } }; // 程序输出回调 process.OutputDataReceived += Process_OutputDataReceived; process.ErrorDataReceived += Process_ErrorDataReceived; //启动程序 process.Start(); // 启动文本输出 process.BeginOutputReadLine(); // 启动错误输出 process.BeginErrorReadLine(); System.Console.WriteLine("被调用程序启动成功"); // 等待程序结束 process.WaitForExit(); } catch (Exception e) { System.Console.WriteLine(e); } finally { System.Console.WriteLine("被调用程序运行结束"); System.Console.ReadKey(); } } /// <summary> /// 通过System.Console.WriteLine输出的信息回调 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void Process_OutputDataReceived(object sender, DataReceivedEventArgs e) { System.Console.WriteLine($"被调用程序OutputDataReceived:{e.Data}"); } /// <summary> /// 通过System.Console.Error.WriteLine输出的信息回调 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void Process_ErrorDataReceived(object sender, DataReceivedEventArgs e) { System.Console.WriteLine($"被调用程序ErrorDataReceived:{e.Data}"); }
2、测试程序
被调用程序的测试如下所示:
static void Main(string[] args) { if (args?.Length > 0) { foreach (var param in args) { System.Console.WriteLine($"被调用程序输入参数:{param}"); } } else { System.Console.Error.WriteLine($"被调用程序输入参数为空"); } }
当程序不传入参数时,此时调用程序输出信息如下:
被调用程序启动成功 被调用程序ErrorDataReceived:被调用程序输入参数为空 被调用程序运行结束
当程序传入如上所示参数时,此时调用程序输出信息如下:
被调用程序启动成功 被调用程序OutputDataReceived:被调用程序输入参数:123 被调用程序OutputDataReceived:被调用程序输入参数:C:\Program Files (x86)\JetBrains\ETW Host 被调用程序运行结束
这篇关于C#调用外部程序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#