(转)C#执行exe程序
本文转自:http://www.cnblogs.com/vir56k/archive/2012/12/03/2799810.html,作者张云飞VIR
最近在操作adb做一些事情,就需要开发个windows引用程序。在这里就需要使用winform来调用adb.exe来做事了。然而,要正确调用,还想要得到调用成功或者的失败的反馈。就需要做点事情了,需要对输出流和异常流进行重定向,其中总是遇到readToEnd方法的假死。查询了一些文档,终于找到一个比较好的实现。代码如下:
///<summary>
/// 执行exe
///</summary>
public class ProcessExcuter
{ public static void Run(string exeFilePath, string args, out string res, out string error)
{
if (string.IsNullOrEmpty(exeFilePath) || !System.IO.File.Exists(exeFilePath))
{
throw new System.IO.FileNotFoundException();
}
if (string.IsNullOrEmpty(args))
{
throw new ArgumentException();
} Process p;
p = new Process();
p.StartInfo.FileName = exeFilePath;
p.StartInfo.Arguments = args;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardOutput = true;
int time = ; StringBuilder sbOut = new StringBuilder();
StringBuilder sbError = new StringBuilder(); try
{
p.Start(); p.ErrorDataReceived += new DataReceivedEventHandler(delegate(object sender, DataReceivedEventArgs e)
{
sbError.Append(e.Data+"\r\n");
});
p.OutputDataReceived += new DataReceivedEventHandler(delegate(object sender, DataReceivedEventArgs e)
{
sbOut.Append(e.Data + "\r\n");
}); p.BeginErrorReadLine();
p.BeginOutputReadLine(); p.WaitForExit(time);
}
finally
{
if (p != null)
{
p.Close();
p.Dispose();
p = null;
}
}
res = sbOut.ToString().Trim();
error = sbError.ToString().Trim();
} }
参考: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.beginerrorreadline.aspx
(转)C#执行exe程序的更多相关文章
- .net 代码调用cmd执行.exe程序,获取控制台输出信息
使用.net core 对老项目升级, .net core 使用TripleDES.Create() 加密众iv字节限制 与 framework中的不同, 新项目还需要兼容老项目版本,还不想通过web ...
- 关于asp.net执行exe程序时权限不够的解决办法(2015.04.17更新)
一,本文背景 长话短说:asp.net项目中需要用到PDF转换成SWF文件,用户上传后自动调用pdf2swf.exe转换. 但有个问题,执行时权限不够,导致一直报错(滚动条一直在往下滚,刷屏中),见下 ...
- 在任务计划程序用Bat命令执行exe程序
@echo off :open choice /c:123 /m "1:创建,2:终止,3:删除" if errorlevel 3 goto delete if errorleve ...
- C#执行EXE程序
第一种方法:System.Diagnostics.ProcessStartInfo info =new System.Diagnostics.ProcessStartInfo(path);info.W ...
- C#在Xp系统执行.exe程序的报错怎么查看原因
我的电脑---->管理---->事件查看器----->应用程序,查看错误来源
- C#和asp.net执行外部EXE程序
这两天研究下.Net的执行外部EXE程序问题,就是在一个程序里通过按钮或其他操作运行起来另外一个程序,需要传入参数,如用户名.密码之类(实际上很类似单点登录,不过要简单的多的多):总结如下: 1.CS ...
- Java程序导出成.jar文件、生成.exe可执行文件及打包成可执行安装程序(可在无Java环境的计算机上运行)--以个人所得税计算器为例
Java程序导出成.jar文件.生成.exe可执行文件及打包成可执行安装程序 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 需要准备的软件: jdk, ...
- 直接用php.exe命令还执行php程序跟直接在网页上访问php程序的区别
1.直接使用php.exe命令执行php程序的格式: php test.php 2.因为没有经过apache或iis这种服务器,所以一些基于服务器的变量是不能使用的, 如$_SERVER,$_ENV等 ...
- electron教程(四): 使用electron-builder或electron-packager将项目打包为可执行桌面程序(.exe)
我的electron教程系列 electron教程(一): electron的安装和项目的创建 electron教程(二): http服务器, ws服务器, 子进程管理 electron教程(三): ...
随机推荐
- BI案例:BI在连锁零售业应用(ZT)
第一部分:连锁零售企业上BI的必要性. 目前国内的连锁零售行业的发展趋势,呈现出产业规模化,经营业态多样化,管理精细化的特点.所谓管理精细化就是"精耕细作搞管理,领先一步订系统". ...
- mootools里选择器$,$$,$E,$ES等的区别
区别就是 $和$$都是1个参数, $适用于ID,或者ID代表的对象 $$适用于CSS选择器 $E和$ES,有2个参数,第二个参数是可选参数代表(filter,即某个ID范围里的元素) $E('inpu ...
- 预定义宏__GNUC__和_MSC_VER
一.预定义__GNUC__宏 1 __GNUC__ 是gcc编译器编译代码时预定义的一个宏.需要针对gcc编写代码时, 可以使用该宏进行条件编译. 2 __GNUC__ 的值表示gcc的版本.需要针对 ...
- zend studio 12汉化和破解
首先提供一个 zend studio 12汉化的百度连接地址(我的网盘里有) http://pan.baidu.com/s/1dD5x1cd 下载后解压 安装方法 Help–> Install ...
- QRCode.jar生成二维码
参考http://www.oschina.net/code/snippet_2252392_45457 package com.ORcode; import java.awt.image.Buffer ...
- Topology的构建
public class BlackListBolt extends BaseRichBolt{ private static Logger logger = Logger.getLogger(Bla ...
- DBA_Oracle Database 11g 面向 DBA 和开发人员的重要特性
2015-01-23 Created By BaoXinjian
- CE_现金的利息设定和计算(案例)
2014-07-15 Created By BaoXinjian 一.摘要 存款利率指客户按照约定条件存入银行帐户的货币,一定时间内利息额同贷出金额即本金的利率.有活期利率和定期利率之分,有年/月/日 ...
- python(15)提取字符串中的数字
python 提取一段字符串中去数字 ss = “123ab45” 方法一:filter filter(str.isdigit, ss) 别处copy的filter的用法: # one>> ...
- Centos 7 修改SSH端口号
注意!这里的Centos版本是7 step1 修改/etc/ssh/sshd_config vi /etc/ssh/sshd_config #Port 22 //这行去掉#号 Po ...