c#中执行adb命令

private void Form1_Load(object sender, EventArgs e)
        {
            String cmd = Application.StartupPath + "\\adb\\adb.exe";
            //ProcessStartInfo psi = null;
            //psi = new ProcessStartInfo(cmd, "devices");
            //Process p = Process.Start(psi);
            Process p = new Process();
            p.StartInfo.FileName = cmd;           //设定程序名  
            p.StartInfo.Arguments = "devices";    //设定程式执行參數  
            p.StartInfo.UseShellExecute = false;        //关闭Shell的使用  
            p.StartInfo.RedirectStandardInput = true;   //重定向标准输入  
            p.StartInfo.RedirectStandardOutput = true;  //重定向标准输出  
            p.StartInfo.RedirectStandardError = true;   //重定向错误输出  
            p.StartInfo.CreateNoWindow = true;          //设置不显示窗口  
            p.Start();
            this.label1.Text = p.StandardOutput.ReadToEnd();

            p.Close();
        }

 

 

System.Diagnostics.Process p = new System.Diagnostics.Process();

             p.StartInfo =  new  System.Diagnostics.ProcessStartInfo();
             p.StartInfo.FileName = strFile;
             p.StartInfo.Arguments = args;
             p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
             p.StartInfo.RedirectStandardOutput =  true ;
             p.StartInfo.UseShellExecute =  false ;
             p.StartInfo.CreateNoWindow =  true ;
             p.Start();
             System.IO.StreamReader reader = p.StandardOutput; //截取输出流
             string  line = reader.ReadLine(); //每次读取一行
             while  (!reader.EndOfStream)
                {
                 onReadLine(line);
                 line = reader.ReadLine();
            
            p.WaitForExit();//等待程序执行完退出进程
             p.Close(); //关闭进程
             reader.Close(); //关闭流
 
 
private void ListFolderInfos(TreeListNode node,string folderpath)
        {
                Process p = new Process();
                p.StartInfo.FileName = adb;           //设定程序名  
                p.StartInfo.Arguments = "shell ls " + folderpath; //ls命令  foldername:"storage/sdcard0"
                p.StartInfo.UseShellExecute = false;        //关闭Shell的使用  
                p.StartInfo.RedirectStandardInput = true;   //重定向标准输入  
                p.StartInfo.RedirectStandardOutput = true;  //重定向标准输出  
                p.StartInfo.RedirectStandardError = true;   //重定向错误输出  
                p.StartInfo.CreateNoWindow = true;          //设置不显示窗口  
                p.Start();
               
                StreamReader reader = p.StandardOutput;
                string line = reader.ReadLine();
                while (!reader.EndOfStream)
                {
                    //if (line.Contains("storage/sdcard"))
                    //{
                    //    return;
                    //}
                    if (line.Length > 0)
                    {
                        TreeListNode node1 = this.tlFolders.AppendNode(new object[] { line }, node);
                        //ListFolderInfos(node1, folderpath + "/" + node1.GetDisplayText(0));
                    }
                    line = reader.ReadLine();
                }
                p.WaitForExit();
                reader.Close();
                p.Close();
          
        }

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要获取 adb 命令返回的结果,您可以使用 `Process.StandardOutput` 属性来读取命令的标准输出。下面是一个示例代码,演示如何在 C# 获取 adb 命令返回的结果: ```csharp using System; using System.Diagnostics; public class AdbResultExample { public static void Main() { // 设置 adb 命令路径 string adbPath = "adb"; // 构建 adb 命令 string adbCommand = "devices"; // 创建进程对象 Process process = new Process(); try { // 配置进程启动信息 process.StartInfo.FileName = adbPath; process.StartInfo.Arguments = adbCommand; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.UseShellExecute = false; process.StartInfo.CreateNoWindow = true; // 启动进程 process.Start(); // 等待命令执行完成 process.WaitForExit(); // 读取命令输出结果 string output = process.StandardOutput.ReadToEnd(); // 输出命令执行结果 Console.WriteLine(output); } catch (Exception ex) { Console.WriteLine("执行 adb 命令时出现异常:" + ex.Message); } finally { // 关闭进程对象 process.Close(); process.Dispose(); } } } ``` 在上述示例代码,您可以将 `adbPath` 设置为您的 adb 命令路径,并设置要执行adb 命令 `adbCommand`。然后,调用 `Main` 方法来运行代码,它将使用 adb 命令获取设备列表,并输出命令的执行结果。 通过调用 `process.StandardOutput.ReadToEnd()` 方法,您可以读取命令的标准输出。将输出保存到一个字符串变量,您可以根据需要对输出进行处理和解析。 请注意,如果 adb 命令输出较大,可能需要使用异步方式读取标准输出,以避免阻塞主线程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值