コード例 #1
0
ファイル: ADBCommand.cs プロジェクト: vaginessa/NetworkADB
        public string CurrentDevice()
        {
            DeviseAddr addr = new DeviseAddr();
            string     sDev = string.Empty;

            if (!string.IsNullOrEmpty(addr.ConnectionType) && addr.ConnectionType.Equals("usb") && !string.IsNullOrEmpty(addr.UsbDevice))
            {
                sDev = addr.UsbDevice;
            }
            else
            {
                sDev = addr.ToString();
            }

            return(sDev);
        }
コード例 #2
0
ファイル: ADBCommand.cs プロジェクト: vaginessa/NetworkADB
        public static string SelectDevice(string sIn)
        {
            string     sRet = sIn;
            DeviseAddr addr = new DeviseAddr();

            if (!string.IsNullOrEmpty(addr.ConnectionType) && addr.ConnectionType.Equals("usb") &&
                !string.IsNullOrEmpty(addr.UsbDevice))
            {
                sRet = string.Format("-s {0} {1}", addr.UsbDevice, sIn);
            }
            if (!string.IsNullOrEmpty(addr.ConnectionType) && addr.ConnectionType.Equals("ip") &&
                !string.IsNullOrEmpty(addr.Address))
            {
                sRet = string.Format("-s {0} {1}", addr.Address, sIn);
            }
            return(sRet);
        }
コード例 #3
0
ファイル: ADBRunner.cs プロジェクト: vaginessa/NetworkADB
        public static string FindADB()
        {
            string sRet = string.Empty;

            DeviseAddr addr = new DeviseAddr();

            if (!string.IsNullOrEmpty(addr.ADBPath))
            {
                sRet = addr.ADBPath;
                return(sRet);
            }

            string   assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            FileInfo fi             = new FileInfo(string.Format("{0}\\{1}", assemblyFolder, ADB_EXE));

            if (fi.Exists)
            {
                sRet = assemblyFolder + "\\";
            }
            else
            {
                using (RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\Android Studio"))
                {
                    if (key != null)
                    {
                        Object o = key.GetValue("SdkPath");
                        if (o != null)
                        {
                            string   sPath = string.Format("{0}\\platform-tools\\{1}", o, ADB_EXE);
                            FileInfo fiReg = new FileInfo(sPath);
                            if (fiReg.Exists)
                            {
                                sRet = o + "\\platform-tools\\";
                            }
                        }
                    }
                }
            }

            return(string.Format("{0}{1}", sRet, ADB_EXE));
        }
コード例 #4
0
ファイル: ADBCommand.cs プロジェクト: vaginessa/NetworkADB
        public CommandResult Connect()
        {
            DeviseAddr addr = new DeviseAddr();

            if (addr.IsValid())
            {
                ADBRunner runner   = new ADBRunner();
                string    sCommand = string.Format(COMMAND_CONNECT, addr.Address);
                if (!string.IsNullOrEmpty(addr.ConnectionType) && addr.ConnectionType.Equals("usb") && !string.IsNullOrEmpty(addr.UsbDevice))
                {
                    sCommand = string.Format(COMMAND_CONNECT_DEV, addr.UsbDevice);
                    return(new CommandResult("You select '" + addr.UsbDevice + "' device", true));
                }
                else
                {
                    bool bret = runner.LaunchProcess(sCommand, CommandDialog.Connect, true);
                    return(new CommandResult(runner.strMessage, bret));
                }
            }
            return(new CommandResult(MESSAGE_CONNECT_ERROR, false));
        }
コード例 #5
0
ファイル: ADBRunner.cs プロジェクト: vaginessa/NetworkADB
        public bool LaunchProcess(string args, CommandDialog cd, bool bShowProgress = false, string sDestination = "")
        {
            try
            {
                strMessage = string.Empty;
                Process build = new Process();

                Thread thDialog = null;
                if (bShowProgress)
                {
                    if (cd == CommandDialog.Copy)
                    {
                        if (pf == null)
                        {
                            pf = new ProgressForm();
                        }
                        pf.SetProcess(build);
                        pf.SetProgress(string.Empty, 0, sDestination);
                        thDialog = new Thread(() => ThreadProcCopy());
                        thDialog.Start();
                    }
                    else if (cd == CommandDialog.Connect)
                    {
                        if (cf == null)
                        {
                            cf = new ConnectForm();
                        }
                        DeviseAddr addr = new DeviseAddr();
                        if (!string.IsNullOrEmpty(addr.ConnectionType) && addr.ConnectionType.Equals("usb") &&
                            !string.IsNullOrEmpty(addr.UsbDevice))
                        {
                            cf.SetIP(addr.UsbDevice);
                        }
                        else
                        {
                            cf.SetIP(addr.ToString());
                        }

                        thDialog = new Thread(() => ThreadProcConnect());
                        thDialog.Start();
                    }
                    else if (cd == CommandDialog.CreateScreenShot)
                    {
                        if (of == null)
                        {
                            of = new OperationForm(OperationForm.TypeOp.CreateScreenShot);
                        }
                        of.SetOperation("Creating ScreenShot");
                        thDialog = new Thread(() => ThreadProcOperation());
                        thDialog.Start();
                    }
                    else if (cd == CommandDialog.Install)
                    {
                        if (of == null)
                        {
                            of = new OperationForm(OperationForm.TypeOp.Install);
                        }
                        of.SetOperation("Install " + args.Substring(args.LastIndexOf("\\") + 1).TrimEnd('\"'));
                        thDialog = new Thread(() => ThreadProcOperation());
                        thDialog.Start();
                    }
                    else if (cd == CommandDialog.Delete)
                    {
                        if (of == null)
                        {
                            of = new OperationForm(OperationForm.TypeOp.Delete);
                        }
                        of.SetOperation("Deleting");
                        thDialog = new Thread(() => ThreadProcOperation());
                        thDialog.Start();
                    }
                }

                build.StartInfo.WorkingDirectory = Path.GetDirectoryName(FindADB());

                if (string.IsNullOrEmpty(build.StartInfo.WorkingDirectory))
                {
                    if (bShowProgress && pf != null)
                    {
                        pf.SetProgress(string.Empty, 0);
                        pf.InternalCloseDialog();
                        pf = null;
                    }
                    if (bShowProgress && cf != null)
                    {
                        cf.InternalCloseDialog();
                        cf = null;
                    }
                    if (bShowProgress && of != null)
                    {
                        of.InternalCloseDialog();
                        of = null;
                    }
                    strMessage = "Can not find adb.exe";
                    return(false);
                }

                build.StartInfo.FileName  = FindADB();
                build.StartInfo.Arguments = args;

                build.StartInfo.UseShellExecute        = false;
                build.StartInfo.RedirectStandardOutput = true;
                build.StartInfo.RedirectStandardError  = true;
                build.StartInfo.CreateNoWindow         = true;
                build.ErrorDataReceived  += build_ErrorDataReceived;
                build.OutputDataReceived += build_ErrorDataReceived;
                build.EnableRaisingEvents = true;
                build.Start();
                build.BeginOutputReadLine();
                build.BeginErrorReadLine();
                build.WaitForExit();

                if (bShowProgress)
                {
                    if (cd == CommandDialog.Copy)
                    {
                        if (build.ExitCode < 0)
                        {
                            if (!string.IsNullOrEmpty(sDestination))
                            {
                                if (File.Exists(sDestination))
                                {
                                    File.Delete(sDestination);
                                }
                                else if (Directory.Exists(sDestination))
                                {
                                    //Directory.Delete(sDestination, true);
                                }
                            }
                        }

                        if (pf != null)
                        {
                            pf.SetProgress(string.Empty, 0);
                            pf.InternalCloseDialog();
                            pf = null;
                        }
                    }
                    else if (cd == CommandDialog.Connect)
                    {
                        cf.InternalCloseDialog();
                        cf = null;
                    }
                    else if (cd == CommandDialog.CreateScreenShot || cd == CommandDialog.Delete || cd == CommandDialog.Install)
                    {
                        of.InternalCloseDialog();
                        of = null;
                    }
                }

                return(true);
            }
            catch (Exception e)
            {
                if (bShowProgress)
                {
                    if (cd == CommandDialog.Copy)
                    {
                        if (pf != null)
                        {
                            pf.SetProgress(string.Empty, 0);
                            pf.InternalCloseDialog();
                            pf = null;
                        }
                    }
                    else if (cd == CommandDialog.Connect)
                    {
                        cf.InternalCloseDialog();
                        cf = null;
                    }
                    else if (cd == CommandDialog.CreateScreenShot || cd == CommandDialog.Delete)
                    {
                        of.InternalCloseDialog();
                        of = null;
                    }
                }

                strMessage = e.Message;
                return(false);
            }
        }