如何在VB.NET中运行adb命令

时间:2015-01-31 06:32:47

标签: android vb.net adb

我正在研究android和.NET

我想用VB.NET来执行adb命令

例如,我想启用或禁用从PC到Android手机的飞行模式

,例如

  

adb shell设置放置global_mode_on 1   adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true

Dim psi As New ProcessStartInfo
Dim psi2 As New ProcessStartInfo
psi.WorkingDirectory = "C:\ad\adsystem\adb file"
psi.Arguments = "adb shell settings put global airplane_mode_on 0"
psi.FileName = "adb"
psi.WindowStyle = ProcessWindowStyle.Hidden
Process.Start(psi)

psi2.WorkingDirectory = "C:\ad\adsystem\adb file"
psi2.Arguments = "adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false"
psi2.FileName = "adb"
psi2.WindowStyle = ProcessWindowStyle.Hidden
Process.Start(psi)

我尝试使用

中的示例

How to get Output of a Command Prompt Window line by line in Visual Basic?

Shell commands in VB

然而,它并没有真正奏效,我不确定为什么......

无论如何都要从VB.NET运行adb命令?

感谢

1 个答案:

答案 0 :(得分:0)

您可以使用cmd.exeadb commands进行通信,请参阅我的代码示例。

声明新流程和流程信息

Dim My_Process As New Process()
Dim My_Process_Info As New ProcessStartInfo()

使用cmd.exe作为我的进程的文件名。

My_Process_Info.FileName = "cmd.exe"

在参数中你可以使用这样的adb命令。

My_Process_Info.Arguments = "/c adb devices"

/c执行string指定的命令,然后终止。

现在在cmd.exe中为adb.exe设置WorkingDirectory。不要混淆,它与cd命令相同。将我们的工作目录设置为adb.exe文件所在的位置。

My_Process_Info.WorkingDirectory = "Directory of your adb.exe file"

现在有一些必要的流程设置。

My_Process_Info.CreateNoWindow = True  ' Show or hide the process Window
My_Process_Info.UseShellExecute = False ' Don't use system shell to execute the process
My_Process_Info.RedirectStandardOutput = True  '  Redirect (1) Output
My_Process_Info.RedirectStandardError = True  ' Redirect non (1) Output
My_Process.EnableRaisingEvents = True ' Raise events
My_Process.StartInfo = My_Process_Info

设置完成,现在开始此过程。

My_Process.Start()

如果您想获得已发送adb命令的回复/结果,可以使用该过程的StandardOutput属性。

Dim Process_ErrorOutput As String = My_Process.StandardOutput.ReadToEnd() ' Stores the Error Output (If any)
Dim Process_StandardOutput As String = My_Process.StandardOutput.ReadToEnd() ' Stores the Standard Output (If any)

示例功能:

Function adb(ByVal Arguments As String) As String
    Try

        Dim My_Process As New Process()
        Dim My_Process_Info As New ProcessStartInfo()

        My_Process_Info.FileName = "cmd.exe" ' Process filename
        My_Process_Info.Arguments = Arguments ' Process arguments
        My_Process_Info.WorkingDirectory = "C:\Users\<Your User Name>\AppData\Local\Android\android-sdk\platform-tools" 'this directory can be different in your case.
        My_Process_Info.CreateNoWindow = True  ' Show or hide the process Window
        My_Process_Info.UseShellExecute = False ' Don't use system shell to execute the process
        My_Process_Info.RedirectStandardOutput = True  '  Redirect (1) Output
        My_Process_Info.RedirectStandardError = True  ' Redirect non (1) Output

        My_Process.EnableRaisingEvents = True ' Raise events
        My_Process.StartInfo = My_Process_Info
        My_Process.Start() ' Run the process NOW

        Dim Process_ErrorOutput As String = My_Process.StandardOutput.ReadToEnd() ' Stores the Error Output (If any)
        Dim Process_StandardOutput As String = My_Process.StandardOutput.ReadToEnd() ' Stores the Standard Output (If any)

        ' Return output by priority
        If Process_ErrorOutput IsNot Nothing Then Return Process_ErrorOutput ' Returns the ErrorOutput (if any)
        If Process_StandardOutput IsNot Nothing Then Return Process_StandardOutput ' Returns the StandardOutput (if any)

    Catch ex As Exception
        Return ex.Message
    End Try

    Return "OK"

End Function

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)     Handles Button1.Click

    'Usage:

    'Get the list of connected devices.
    MsgBox(adb("/c adb devices")) 

    'Connect your phone wirelessly using wifi (required phone I.P)
    MsgBox(adb("/c adb disconnect 192.168.xx.xx:5555")) 

    'Get the list of connected devices.
    MsgBox(adb("/c adb devices"))

    'Put your phone on airplane mode. 
    MsgBox(adb("/c adb shell settings put global airplane_mode_on 1"))

End Sub