【发布时间】:2017-12-30 13:22:15
【问题描述】:
我正在尝试从 cmd 读取电池信息。如何提取每个值并将它们放入各自的文本框中,如下图所示?
这是我的代码:
Private Results As String
Private Delegate Sub delUpdate()
Private Finished As New delUpdate(AddressOf UpdateText)
Private Sub UpdateText()
TextBox11.Text = Results
End Sub
Private Sub batt_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim CMDThread As New Threading.Thread(AddressOf CMDAutomate)
CMDThread.Start()
End Sub
Private Sub CMDAutomate()
Dim myprocess As New Process
Dim StartInfo As New System.Diagnostics.ProcessStartInfo
StartInfo.FileName = "cmd" 'starts cmd window
StartInfo.RedirectStandardInput = True
StartInfo.RedirectStandardOutput = True
StartInfo.UseShellExecute = False 'required to redirect
StartInfo.CreateNoWindow = False 'creates no cmd window
myprocess.StartInfo = StartInfo
myprocess.Start()
Dim SR As System.IO.StreamReader = myprocess.StandardOutput
Dim SW As System.IO.StreamWriter = myprocess.StandardInput
SW.WriteLine("adb shell dumpsys battery") 'the command you wish to run.....
SW.WriteLine("exit") 'exits command prompt window
Results = SR.ReadToEnd 'returns results of the command window
SW.Close()
SR.Close()
'invokes Finished delegate, which updates textbox with the results text
Invoke(Finished)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim value As String = TextBox11.Text
Dim topic_start As String = topic_start = value.LastIndexOf("AC Powered:") + 1
Dim topic As String = value.Substring(topic_start, value.Length - topic_start)
TextBox1.Text = topic.ToString
End Sub
Button1 在图片中标记为Get Battery Information。
【问题讨论】:
-
您可能想展示这些数据是如何进入文本框的。但是,您只需要使用 VbCrLf 作为分隔符
.Split()TextBox.Text。 -
到目前为止你写了什么代码?我们不能简单地为您编写完整的代码
-
所有相关信息都应发布在问题中,而不是链接到其他网站。
-
那么您已有的代码有什么问题?运行时会发生什么/不会发生什么?
-
你需要那个文本框吗?据我所知,您想在用户按下按钮时填写这些“字段”。如果是这样,您需要将那些在
Results返回的值存储在 List() 或 Array() 中,然后根据需要用该 List/Array 的项目填充文本框/标签。
标签: vb.net