最近在操作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 = 5000;

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

.net 中,使用c# 语言 ,执行exe程序。相关推荐

  1. window通过bat脚本执行exe程序

    1. 执行exe程序 @echo on cd "C:\Users\li\AppData\Local\Programs\xxx" Start "" "x ...

  2. Unity Editor - 在编辑器模式下执行exe程序、打开文件、定位脚本行

    执行exe程序.打开文件 当我们想在Unity 编辑器下 通过exe程序打开指定脚本时我们可以调用以下API 这里我是通过vscode 打开 lua 脚本 并定位到具体某一行. static void ...

  3. Asp.net中执行.EXE程序的方法

    在无意中看到了网页中执行.exe应用程序的方法: 1.用.NET Framework中的Process类 添加引用using System.Diagnostics; 在按钮的单击事件处理程序中填入以下 ...

  4. bat执行exe程序_dos命令start教程,并行运行exe程序或者启动bat批处理cmd脚本

    大家好,我是老盖,首先感谢观看本文,本篇文章做的有视频,视频讲述的比较详细,也可以看我发布的视频. 今天我们学习DOS命令start这个命令,它可以启动一个EXE程序,也可以启动一个BAT批处理脚本, ...

  5. python设计图形界面执行exe程序_Python开发案例:设计启动工具箱,显示图形界面的方式...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于云+社区,作者 用户2870857 转载地址 https://bl ...

  6. java process exe.exec 执行exe程序

    以前好奇怎么让java调用普通的exe程序, 让exe程序协同java一起处理数据, 一直也没时间看. 只有这么两行零散的代码, 惭愧,没有实践过. 先堆这里. Process pro=exe.exe ...

  7. 使用python做一个pdf转图片的可执行exe程序

    使用python做一个pdf转图片的可执行exe 1.安装环境 python3 模块:PymuPDF,pyinstaller import fitz import os import tkinterd ...

  8. java 执行exe程序

    /**@PARAM command指exe程序所在路径**/ public static String executeCmd(String command) throws IOException { ...

  9. java调用exe_Windows系统中Java调用cmd命令及执行exe程序的方法

    Java调用cmd命令,并输出显示信息: package com.anxin.cmd.test; import java.io.BufferedReader; import java.io.Input ...

最新文章

  1. TP-link 设置MAC地址过滤
  2. 2019-10-12 线性最小方差估计和正交定理
  3. Strange Memory Gym - 102832F
  4. xshell 秘钥连接_如何使用PuTTY和xshell 分别远程连接linux,并配置秘钥认证
  5. SpringMVC接收Post的实体/JSon数据
  6. 腾讯云直播sdk_官方推荐 | 2分钟带你认识腾讯云直播 CSS
  7. Android 系统性能优化(72)-----App启动优化
  8. f2blog最新注入漏洞
  9. 波形捕捉:(8)使用“捕捉缓冲区”
  10. cdoj 1328 卿学姐与诡异村庄 Label:并查集 || 二分图染色
  11. 第五章 列表、元组和字符串[DDT书本学习 小甲鱼]【2】
  12. 软/硬件负载均衡产品 你知多少?
  13. git小乌龟安装_ROS系统安装与体验
  14. SQL中返回刚插入记录的ID
  15. faststone capture没声音
  16. IBM p720 在HMC上创建分区并安装AIX系统
  17. Ubuntu系统通用快捷键
  18. 服务器被ddos攻击?分析如何防止DDOS攻击?
  19. python importlib bootstrap_python - importlib._bootstrap和Python解释器初始化 - SO中文参考 - www.soinside.com...
  20. Python selenium —— 将你的自动化脚本打包成一个exe

热门文章

  1. MYSQL服务的极简免配置快绿色速安装法[适合新手和懒人]
  2. vue.js学习系列-第二篇
  3. 【TP5.0】tp5.0实现连接多个数据库,实现类似3.2M(‘table’,'prefix_','db_config2')的CURD操作...
  4. BeanShell中Getter和Setter语法
  5. Maven3.x 插件开发入门
  6. 基于bmob的校园资料分享互助平台
  7. (十五)java数组
  8. LAMP环境搭建之rpm软件包
  9. django使用auth模块进行身份认证
  10. 7.Deque的应用案例-回文检查