在c#中调用另一个应用程序或命令行(.exe 带参数)

简介:

在.net中使用system.diaglostics.Process可以用来调用另一个命令行或程序。

using   System.Diagnostics;  
 如果是dos  
 Process.Start("cmd.exe");  
 如果是其他文件  
 Process.Start("绝对路径+文件名.exe");  
 ------------------------------------  
 如何在c#中调用外部dos程序?  
 使用Process对象:      
 System.Diagnostics.Process     p=new     System.Diagnostics.Process();      
 p.StartInfo.FileName="arj.exe"     ;//需要启动的程序名      
 p.StartInfo.Arguments="-x     sourceFile.Arj     c:\temp";//启动参数      
 p.Start();//启动      
 if(p.HasExisted)//判断是否运行结束      
   p.kill();  



-------------------------------------------------------------------------------------------------------------------------------------
///      
 ///   启动其他的应用程序  
 ///    

 ///   应用程序名称  
 ///   应用程序工作目录  
 ///   命令行参数  
 ///   窗口风格  
 public   static   bool   StartProcess(string   file,string   workdirectory,string   args,ProcessWindowStyle   style)  
 {  
 try  
 {  
 Process   myprocess   =   new   Process();  
 ProcessStartInfo   startInfo   =   new   ProcessStartInfo(file,args);  
 startInfo.WindowStyle   =   style;  
 startInfo.WorkingDirectory   =   workdirectory;  
 myprocess.StartInfo   =   startInfo;  
 myprocess.StartInfo.UseShellExecute   =   false;  
 myprocess.Start();  
 return   true;  
 }  
 catch(Exception   e0)  
 {  
 MessageBox.Show("启动应用程序时出错!原因:"   +   e0.Message);  
 }  
 return   false;  
 }  
   
   
   
 string   parms   =   ""   +   GlobalObject.GetInstance().UserID   +   "   "   +   GlobalObject.GetInstance().UserPassword;  
 if   (PublicMethods.StartProcess(Application.StartupPath   +   @"\uptool\uptool.exe",Application.StartupPath   +   "\\UpTool",parms,ProcessWindowStyle.Normal))  
 {  
 Environment.Exit(0);  
 }  
----------------------------------------------------------------------------------------------------------------------
Process.Start("IExplore.exe",   "[url]http://www.newhappy.cn[/url]");  
System.Diagnostics.ProcessStartInfo   startInfo   =   new   System.Diagnostics.ProcessStartInfo(   );  
 startInfo.FileName   =   "执行EXE的文件名";  
 startInfo.Arguments   =   "参数数组";  
 System.Diagnostics.Process.Start(   startInfo   );
----------------------------------------------------------------------------------------------------------------------------
1.有好多时,我们需要调用外部的EXE程序,并且要等它运行完毕,我们才可以继续下面的动作,那我们怎样去实现了,请看以下代码.
       '怎样等待外部程序运行完毕.
       '从系统资料夹读入文件
       Dim sysFolder As String = _
                   Environment.GetFoldERPath(Environment.SpecialFolder.System)
       '创建一个新的进程结构
       Dim pInfo As New ProcessStartInfo()
       '设置其成员FileName为系统资料的Eula.txt
       pInfo.FileName = sysFolder & "\eula.txt"
       '运行该文件
       Dim p As Process = Process.Start(pInfo)
       '等待程序装载完成
       p.WaitForInputIdle()
       '等待进行程退出
       p.WaitForExit()
       '继续执行下面的代码
       MessageBox.Show("继续执行代码")


2.我们想在5秒钟后,强行关闭它.而不是需要我手工关闭.
   '设置退出时间
   Dim timeOut As Integer = 5000
   Dim sysFolder As String = _
        Environment.GetFolderPath(Environment.SpecialFolder.System)
   Dim pInfo As New ProcessStartInfo()
   pInfo.FileName = sysFolder & "\eula.txt"
   Dim p As Process = Process.Start(pInfo)
   p.WaitForInputIdle()
   p.WaitForExit(timeOut)
   '检查是否在超时前已关闭了.
   If p.HasExited = False Then
       '进行程还在运行
       '看进程有没有回应
       If p.Responding Then
           p.CloseMainWindow() '关闭窗口
       Else
           p.Kill()  '强行中断
       End If
   End If
   MessageBox.Show("继续执行代码")










本文转自 牛海彬 51CTO博客,原文链接:http://blog.51cto.com/newhappy/135705,如需转载请自行联系原作者

目录
相关文章
|
3月前
|
缓存 C# Windows
C#程序如何编译成Native代码
【10月更文挑战第15天】在C#中,可以通过.NET Native和第三方工具(如Ngen.exe)将程序编译成Native代码,以提升性能和启动速度。.NET Native适用于UWP应用,而Ngen.exe则通过预编译托管程序集为本地机器代码来加速启动。不过,这些方法也可能增加编译时间和部署复杂度。
183 2
|
29天前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
86 13
|
2月前
|
存储 安全 物联网
C# 在物联网 (IoT) 应用中的应用
本文介绍了C#在物联网(IoT)应用中的应用,涵盖基础概念、优势、常见问题及其解决方法。重点讨论了网络通信、数据处理和安全问题,并提供了相应的代码示例,旨在帮助开发者更好地利用C#进行IoT开发。
73 3
|
2月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
40 3
|
2月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
67 1
|
3月前
|
C# Windows
C#实现指南:将文件夹与exe合并为一个exe
C#实现指南:将文件夹与exe合并为一个exe
195 9
|
2月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
21 0
|
4月前
|
设计模式 开发框架 前端开发
MVC 模式在 C# 中的应用
MVC(Model-View-Controller)模式是广泛应用于Web应用程序开发的设计模式,将应用分为模型(存储数据及逻辑)、视图(展示数据给用户)和控制器(处理用户输入并控制模型与视图交互)三部分,有助于管理复杂应用并提高代码可读性和维护性。在C#中,ASP.NET MVC框架常用于构建基于MVC模式的Web应用,通过定义模型、控制器和视图,实现结构清晰且易维护的应用程序。
69 2
|
3月前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
264 0
|
4月前
|
编译器 C# Android开发
Uno Platform 是一个用于构建跨平台应用程序的强大框架,它允许开发者使用 C# 和 XAML 来创建适用于多个平台的应用
Uno Platform 是一个用于构建跨平台应用程序的强大框架,它允许开发者使用 C# 和 XAML 来创建适用于多个平台的应用
381 8