C# 在一个构造中向Exe发出单独的参数
我目前正在尝试通过管道将多个参数传输到google sdk中的C# 在一个构造中向Exe发出单独的参数,c#,adb,C#,Adb,我目前正在尝试通过管道将多个参数传输到google sdk中的adb.exe文件。我的输入示例如下: adb shell getprop ro.build.version.release 亚行壳牌getprop ro.product.brand 从我的应用程序中输出正确的。但是,问题是我想填充一个信息列表视图,而我目前遇到的问题是如何通过管道命令来获得所需的输出。我目前有: var proc = new Process { StartIn
adb.exe
文件。我的输入示例如下:
adb shell getprop ro.build.version.release
亚行壳牌getprop ro.product.brand
从我的应用程序中输出正确的。但是,问题是我想填充一个信息列表视图,而我目前遇到的问题是如何通过管道命令来获得所需的输出。我目前有:
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "Resources/adb.exe",
Arguments = "devices",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
string Output = proc.StandardOutput.ReadToEnd().ToString();
目前返回的结果与预期一致,但我希望从管道中获得多个结果,例如:
Arguments = "devices ro.build.version.release ro.product.brand"
即使直接将管道传输到命令提示符中,这也无济于事
adb壳牌getprop设备ro.build.version.release ro.product.brand
empty,我提出了一个(假设)负载沉重的解决方案,即将executional的初始化移到它自己的函数中,以便多次调用。见下面的代码:
public string GetInfo(string CommandArg)
{
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "Resources/adb.exe",
Arguments = CommandArg,
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
return proc.StandardOutput.ReadToEnd().ToString();
}
public void SetDefineInformation()
{
AndroidVersion = decimal.Parse(GetInfo("ro.build.version.release"));
DeviceModel = GetInfo("ro.product.device");
...
}
对我来说,这似乎是一个负载繁重的任务,不断打开一个可执行文件,让它关闭,然后重新打开,直到任务完成。是否有一个全面的解决方案,可以让一个人将多个参数传递给一个执行程序并获得所需的结果?adb可以启动一个shell,这样您就可以使用
adb shell创建shell,然后直接写入它您提出的“优化”不会带来可测量的性能增益。adb
代码非常有效。它引入的开销非常小。特别是在客户部分。大部分延迟都来自于等待设备的响应
因此,停止过度复杂化,只需运行多个adb shell
会话即可。如果加载adb
二进制文件让您非常烦恼,只需使用套接字直接与adb
服务器通信即可。请查看以了解如何在c#
中执行此操作。或者直接使用图书馆
至于优化查询多个系统属性-只需使用adb shell getprop
命令即可一次提取所有属性。感谢您提供的指针。我一定会研究这个方法!