C# 执行CMD脚本,调用Android ADB命令

1.C# 使用Process执行CMD脚本

同步写法

/// <summary>
        /// 同步执行adb命令
        /// </summary>
        /// <param name="arguments">命令参数(adb除外)</param>
        /// <param name="ouputFunc">命令执行正确返回</param>
        /// <param name="errOuputFunc">命令执行错误返回</param>
        /// <returns>执行返回的正确返回和错误返回 格式:正确返回\r\n错误返回</returns>
        public string RunADB(string arguments, out Func<string> outputFunc, out Func<string> errOutputFunc)
        {
            string cmd = Application.StartupPath + "\\adb-1.0.41\\adb.exe";
            Process p = new Process();
            p.StartInfo.FileName = cmd;           //设定程序名  
            p.StartInfo.Arguments = arguments;    //设定程式执行參數  
            p.StartInfo.UseShellExecute = false;        //关闭Shell的使用  
            p.StartInfo.RedirectStandardInput = true;   //重定向标准输入  
            p.StartInfo.RedirectStandardOutput = true;  //重定向标准输出  
            p.StartInfo.RedirectStandardError = true;   //重定向错误输出  
            p.StartInfo.CreateNoWindow = true;          //设置不显示窗口  
            p.StartInfo.StandardOutputEncoding = Encoding.UTF8; // 指定输出流编码为 UTF-8
            p.StartInfo.StandardErrorEncoding = Encoding.UTF8; // 指定错误输出流编码为 UTF-8
            p.Start();

            string result = p.StandardOutput.ReadToEnd(); // 正确输出
            var errOuput = p.StandardError.ReadToEnd(); // 错误输出
            p.Close();

            outputFunc = () => result;
            errOutputFunc = () => errOuput;
            return result + "\r\n" + errOuput;
        }

异步写法

/// <summary>
        /// 异步执行adb命令
        /// </summary>
        /// <param name="arguments"></param>
        /// <param name="dataReceivedEventHandler">命令执行正确结果返回回调</param>
        /// <param name="errorDataReceivedEventHandler">命令执行错误结果返回回调</param>
        public void AsyncRunADB(string arguments, DataReceivedEventHandler dataReceivedEventHandler, DataReceivedEventHandler errorDataReceivedEventHandler)
        {
            string cmd = Application.StartupPath + "\\adb-1.0.41\\adb.exe";
            Process p = new Process();
            p.StartInfo.FileName = cmd;           //设定程序名  
            p.StartInfo.Arguments = arguments;    //设定程式执行參數  
            p.StartInfo.UseShellExecute = false;        //关闭Shell的使用  
            p.StartInfo.RedirectStandardInput = true;   //重定向标准输入  
            p.StartInfo.RedirectStandardOutput = true;  //重定向标准输出  
            p.StartInfo.RedirectStandardError = true;   //重定向错误输出  
            p.StartInfo.CreateNoWindow = true;          //设置不显示窗口  
            p.StartInfo.StandardOutputEncoding = Encoding.UTF8; // 指定输出流编码为 UTF-8
            p.StartInfo.StandardErrorEncoding = Encoding.UTF8; // 指定错误输出流编码为 UTF-8
            p.OutputDataReceived += dataReceivedEventHandler;
            p.ErrorDataReceived += errorDataReceivedEventHandler;
            p.Start();
            p.BeginOutputReadLine();
            p.BeginErrorReadLine();
            p.Close();
        }

2. 准备adb

 2. 执行命令行代码逻辑

RunADB("devices")

 3.开启手机调试者模式,用usb 连接电脑

最终调试界面

 4.项目代码地址

GitHub - harrylsp/AndroidADBDriver

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值