Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用visual basic从cmd获取响应_Android_Visual Studio 2012_Visual Studio 2008_Vpn_File Transfer - Fatal编程技术网

Android 使用visual basic从cmd获取响应

Android 使用visual basic从cmd获取响应,android,visual-studio-2012,visual-studio-2008,vpn,file-transfer,Android,Visual Studio 2012,Visual Studio 2008,Vpn,File Transfer,我用VisualBasic制作了一个应用程序,可以打开cmd并通过VPN将文件传输到Android接收器。它工作正常,但如何从cmd获得响应以检查传输是否成功 示例代码 公开课表格1 Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click Shell("cmd.exe /k" + "adb push C:\Users\user\D

我用VisualBasic制作了一个应用程序,可以打开cmd并通过VPN将文件传输到Android接收器。它工作正常,但如何从cmd获得响应以检查传输是否成功

示例代码

公开课表格1

Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
    Shell("cmd.exe /k" + "adb push C:\Users\user\Desktop\Newfolder\1.png /sdcard/test")

End Sub

Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
    Shell("adb connect " + TextBox1.Text)
    btnSend.Enabled = True
    btnConnect.Enabled = False
End Sub

End Class

我假设您希望获得adb命令的返回代码或std输出。无论哪种方式,您都需要启动自己的进程,而不是使用Shell命令,因为:

进程终止时可以返回退出代码。但是,您不能使用Shell来检索此退出代码,因为Shell在等待终止时返回零,并且进程运行在与Shell不同的对象中。从

该链接将向您展示如何设置返回退出代码的进程。有关守则如下:

Dim procID As Integer
Dim newProc As Diagnostics.Process
newProc = Diagnostics.Process.Start("C:\WINDOWS\NOTEPAD.EXE")
procID = newProc.Id
newProc.WaitForExit()
Dim procEC As Integer = -1
If newProc.HasExited Then
    procEC = newProc.ExitCode
End If
MsgBox("Process with ID " & CStr(ProcID) & _
    " terminated with exit code " & CStr(procEC))
如果您想要的不是返回代码,而是程序的标准输出,那么根据 您可以通过以下代码段执行此操作:

Imports System
Imports System.IO
Imports System.Diagnostics

Class IORedirExample
    Public Shared Sub Main()
        Dim args() As String = Environment.GetCommandLineArgs()
        If args.Length > 1
            ' This is the code for the spawned process'

            Console.WriteLine("Hello from the redirected process!")
        Else 
            ' This is the code for the base process '

            Dim myProcess As New Process()
            ' Start a new instance of this program but specify the spawned version. '

            Dim myProcessStartInfo As New ProcessStartInfo(args(0), "spawn")
            myProcessStartInfo.UseShellExecute = False
            myProcessStartInfo.RedirectStandardOutput = True
            myProcess.StartInfo = myProcessStartInfo
            myProcess.Start()
            Dim myStreamReader As StreamReader = myProcess.StandardOutput
            ' Read the standard output of the spawned process. '
            Dim myString As String = myStreamReader.ReadLine()
            Console.WriteLine(myString)

            myProcess.WaitForExit()
            myProcess.Close()
        End If 
    End Sub 
End Class
当您自己尝试这一点时,请记住您必须包括

myProcessStartInfo.UseShellExecute = False

行。

@我编辑了我的帖子,你能帮我回答我的新问题吗?