C# 如何在C语言中获取异常adb错误代码#

C# 如何在C语言中获取异常adb错误代码#,c#,android,shell,exception,adb,C#,Android,Shell,Exception,Adb,Η如何获取adb的错误异常 例如,如果没有连接adb设备richtextbox没有连接任何设备并且没有在richtextbox中写入任何内容,或者如果设备连接richtextbox写入读取数据确定,则显示有关命令的所有信息 这是我的代码: // START READ INFO// //MANFACTURE// using (Process process = new Process()) { ProcessStartInfo startInfo = new ProcessStartInf

Η如何获取adb的错误异常

例如,如果没有连接adb设备
richtextbox
没有连接任何设备并且没有在
richtextbox
中写入任何内容,或者如果设备连接
richtextbox
写入读取数据确定,则显示有关命令的所有信息

这是我的代码:

// START READ INFO//
//MANFACTURE//
using (Process process = new Process())
{
    ProcessStartInfo startInfo = new ProcessStartInfo
    {
        WindowStyle = ProcessWindowStyle.Hidden,
        CreateNoWindow = true,
        UseShellExecute = false,
        RedirectStandardOutput = true,
        FileName = "adb.exe",
        Arguments = " shell getprop ro.product.manufacturer"
    };
    process.StartInfo = startInfo;
    process.Start();
    process.StartInfo.RedirectStandardError = true;
    Sks.Text = process.StandardOutput.ReadToEnd();
    string b = "MANUFACTURE :" + Sks.Text;
    progressBar1.Value = 0;
    progressBar1.Minimum = 0;
    progressBar1.Maximum = 15;
    progressBar1.Step = 1;

    for (int i = 0; i < 100; i++)
    {
        progressBar1.PerformStep();
    }
   // SECURITY PATCH //
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;
    startInfo.CreateNoWindow = true;
    startInfo.UseShellExecute = false;
    startInfo.RedirectStandardOutput = true;
    startInfo.FileName = "adb.exe";
    startInfo.Arguments = "shell getprop ro.build.version.security_patch";
    process.StartInfo = startInfo;
    process.Start();
    Sks.Text = process.StandardOutput.ReadToEnd();
    string E = Environment.NewLine + "SECURITY PATCH :" + Sks.Text;
    string s = Sks.Text = b + E;
//开始读取信息//
//制造//
使用(流程=新流程())
{
ProcessStartInfo startInfo=新的ProcessStartInfo
{
WindowsStyle=ProcessWindowsStyle.Hidden,
CreateNoWindow=true,
UseShellExecute=false,
重定向标准输出=真,
FileName=“adb.exe”,
Arguments=“shell getprop ro.product.manufacturer”
};
process.StartInfo=StartInfo;
process.Start();
process.StartInfo.RedirectStandardError=true;
Sks.Text=process.StandardOutput.ReadToEnd();
字符串b=“制造:”+Sks.Text;
progressBar1.值=0;
progressBar1.最小值=0;
progressBar1.最大值=15;
progressBar1.步骤=1;
对于(int i=0;i<100;i++)
{
progressBar1.PerformStep();
}
//安全补丁//
startInfo.WindowStyle=ProcessWindowStyle.Hidden;
startInfo.CreateNoWindow=true;
startInfo.UseShellExecute=false;
startInfo.RedirectStandardOutput=true;
startInfo.FileName=“adb.exe”;
startInfo.Arguments=“shell getprop ro.build.version.security\u补丁”;
process.StartInfo=StartInfo;
process.Start();
Sks.Text=process.StandardOutput.ReadToEnd();
字符串E=Environment.NewLine+“安全补丁:”+Sks.Text;
字符串s=Sks.Text=b+E;
这里有两个问题:

  • 您需要在启动流程之前重定向
  • 错误在
    StandardError
  • 以下是您应该如何做到这一点:

    process.StartInfo = startInfo;
    process.StartInfo.RedirectStandardError = true;
    process.Start();
    
    Sks.Text = process.StandardOutput.ReadToEnd();
    var error = process.StandardError.ReadToEnd(); // "error: no devices/emulators found"
    if (!string.IsNullOrEmpty(error))
    {
        // do something...
    }
    
    process.StartInfo = startInfo;
    process.StartInfo.RedirectStandardError = true;
    process.Start();
    
    Sks.Text = process.StandardOutput.ReadToEnd();
    var error = process.StandardError.ReadToEnd(); // "error: no devices/emulators found"
    if (!string.IsNullOrEmpty(error))
    {
        // do something...
    }