在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();   



-------------------------------------------------------------------------------------------------------------------------------------
///   <summary>   
  ///   启动其他的应用程序   
  ///   </summary>   
  ///   <param   name="file">应用程序名称</param>   
  ///   <param   name="workdirectory">应用程序工作目录</param>   
  ///   <param   name="args">命令行参数</param>   
  ///   <param   name="style">窗口风格</param>   
  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天前
|
设计模式 开发框架 前端开发
MVC 模式在 C# 中的应用
MVC(Model-View-Controller)模式是广泛应用于Web应用程序开发的设计模式,将应用分为模型(存储数据及逻辑)、视图(展示数据给用户)和控制器(处理用户输入并控制模型与视图交互)三部分,有助于管理复杂应用并提高代码可读性和维护性。在C#中,ASP.NET MVC框架常用于构建基于MVC模式的Web应用,通过定义模型、控制器和视图,实现结构清晰且易维护的应用程序。
12 2
|
12天前
|
编译器 C# Android开发
Uno Platform 是一个用于构建跨平台应用程序的强大框架,它允许开发者使用 C# 和 XAML 来创建适用于多个平台的应用
Uno Platform 是一个用于构建跨平台应用程序的强大框架,它允许开发者使用 C# 和 XAML 来创建适用于多个平台的应用
42 8
|
21天前
|
存储 C# 开发者
枚举与结构体的应用:C#中的数据组织艺术
在C#编程中,枚举(`enum`)和结构体(`struct`)是非常重要的数据类型。枚举用于定义命名常量集合,提高代码可读性;结构体则封装相关数据字段,适合小型数据集。本文从基本概念入手,探讨它们的使用技巧、常见问题及解决方案,帮助开发者更好地利用这些特性构建健壮的应用程序。
23 8
|
19天前
|
C# 容器
C#中的命名空间与程序集管理
在C#编程中,`命名空间`和`程序集`是组织代码的关键概念,有助于提高代码的可维护性和复用性。本文从基础入手,详细解释了命名空间的逻辑组织方式及其基本语法,展示了如何使用`using`指令访问其他命名空间中的类型,并提供了常见问题的解决方案。接着介绍了程序集这一.NET框架的基本单位,包括其创建、引用及高级特性如强名称和延迟加载等。通过具体示例,展示了如何创建和使用自定义程序集,并提出了针对版本不匹配和性能问题的有效策略。理解并善用这些概念,能显著提升开发效率和代码质量。
33 4
|
25天前
|
Linux C# 开发者
Uno Platform 驱动的跨平台应用开发:从零开始的全方位资源指南与定制化学习路径规划,助您轻松上手并精通 C# 与 XAML 编程技巧,打造高效多端一致用户体验的移动与桌面应用程序
【9月更文挑战第8天】Uno Platform 的社区资源与学习路径推荐旨在为初学者和开发者提供全面指南,涵盖官方文档、GitHub 仓库及社区支持,助您掌握使用 C# 和 XAML 创建跨平台原生 UI 的技能。从官网入门教程到进阶技巧,再到活跃社区如 Discord,本指南带领您逐步深入了解 Uno Platform,并提供实用示例代码,帮助您在 Windows、iOS、Android、macOS、Linux 和 WebAssembly 等平台上高效开发。建议先熟悉 C# 和 XAML 基础,然后实践官方教程,研究 GitHub 示例项目,并积极参与社区讨论,不断提升技能。
35 2
|
1月前
|
C#
C# 一分钟浅谈:循环结构 for 和 while 的应用
【9月更文挑战第1天】循环结构是编程中的基础概念,C# 中常用的 `for` 和 `while` 循环允许重复执行代码直至满足特定条件。`for` 循环基于计数,适用于已知循环次数的情况;`while` 循环基于条件,适用于未知循环次数的情况;`do-while` 循环则至少执行一次循环体。本文详细介绍了这些循环的语法和示例,并探讨了常见问题及其解决方法,如循环条件和更新表达式的错误设置。通过综合应用示例(如计算阶乘和斐波那契数列),帮助读者更好地理解和掌握循环结构的使用方法。正确使用循环可以提高程序的效率和可读性。
48 2
|
2月前
|
开发框架 .NET 编译器
总结一下 C# 如何自定义特性 Attribute 并进行应用
总结一下 C# 如何自定义特性 Attribute 并进行应用
|
2月前
|
编译器 C# Windows
C#基础:手动编译一个.cs源代码文件并生成.exe可执行文件
通过上述步骤,应该能够高效准确地编译C#源代码并生成相应的可执行文件。此外,这一过程强调了对命令行编译器的理解,这在调试和自动化编译流程中是非常重要的。
112 2
|
2月前
|
开发者 C# Android开发
Xamarin 与 .NET:解锁现代化移动应用开发的超级武器——深入探讨C#与.NET框架如何赋能跨平台应用,实现高效编码与卓越性能
【8月更文挑战第31天】Xamarin 与 .NET 的结合为开发者提供了强大的平台,用于构建现代化移动应用。通过 C# 和 .NET 框架,Xamarin 可以实现一次编写、多平台运行,覆盖 iOS、Android 和 Windows。这种方式不仅节省了开发时间和成本,还保证了应用的一致性和高质量。Xamarin 是一个开源框架,专为跨平台移动应用开发设计,允许使用 C# 语言和 .NET 核心库构建原生应用,并访问各平台特定功能。微软维护的 Xamarin 是 Visual Studio 生态系统的一部分,极大地提高了开发效率。
61 0