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

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

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



-------------------------------------------------------------------------------------------------------------------------------------
///<summary>
///启动其他的应用程序
///</summary>
///<paramname="file">应用程序名称</param>
///<paramname="workdirectory">应用程序工作目录</param>
///<paramname="args">命令行参数</param>
///<paramname="style">窗口风格</param>
publicstaticboolStartProcess(stringfile,stringworkdirectory,stringargs,ProcessWindowStylestyle)
{
try
{
Processmyprocess=newProcess();
ProcessStartInfostartInfo=newProcessStartInfo(file,args);
startInfo.WindowStyle=style;
startInfo.WorkingDirectory=workdirectory;
myprocess.StartInfo=startInfo;
myprocess.StartInfo.UseShellExecute=false;
myprocess.Start();
returntrue;
}
catch(Exceptione0)
{
MessageBox.Show("启动应用程序时出错!原因:"+e0.Message);
}
returnfalse;
}



stringparms=""+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","http://www.newhappy.cn");
System.Diagnostics.ProcessStartInfostartInfo=newSystem.Diagnostics.ProcessStartInfo();
startInfo.FileName="执行EXE的文件名";
startInfo.Arguments="参数数组";
System.Diagnostics.Process.Start(startInfo);
----------------------------------------------------------------------------------------------------------------------------
1.有好多时,我们需要调用外部的EXE程序,并且要等它运行完毕,我们才可以继续下面的动作,那我们怎样去实现了,请看以下代码.
'怎样等待外部程序运行完毕.
'从系统资料夹读入文件
DimsysFolderAsString=_
Environment.GetFoldERPath(Environment.SpecialFolder.System)
'创建一个新的进程结构
DimpInfoAsNewProcessStartInfo()
'设置其成员FileName为系统资料的Eula.txt
pInfo.FileName=sysFolder&"/eula.txt"
'运行该文件
DimpAsProcess=Process.Start(pInfo)
'等待程序装载完成
p.WaitForInputIdle()
'等待进行程退出
p.WaitForExit()
'继续执行下面的代码
MessageBox.Show("继续执行代码")


2.我们想在5秒钟后,强行关闭它.而不是需要我手工关闭.
'设置退出时间
DimtimeOutAsInteger=5000
DimsysFolderAsString=_
Environment.GetFolderPath(Environment.SpecialFolder.System)
DimpInfoAsNewProcessStartInfo()
pInfo.FileName=sysFolder&"/eula.txt"
DimpAsProcess=Process.Start(pInfo)
p.WaitForInputIdle()
p.WaitForExit(timeOut)
'检查是否在超时前已关闭了.
Ifp.HasExited=FalseThen
'进行程还在运行
'看进程有没有回应
Ifp.RespondingThen
p.CloseMainWindow()'关闭窗口
Else
p.Kill()'强行中断
EndIf
EndIf
MessageBox.Show("继续执行代码")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值