public override bool StartProcess()
        {
            try
            {
                string Executable = Path.Combine(DeploymentPath, ProjectConfig.Name, "binaries", "ps4", string.Format("{0}.self", ProjectConfig.Name)).ToLower();

                if (!File.Exists(Executable))
                {
                    Logger.Error(string.Format("Failed to launch application on PS4 device '{0}'. No executable found.", Address));
                    return(false);
                }

                Array Targets = TargetManager.GetTargetsByHost(Address) as Array;
                if (Targets == null || Targets.Length == 0)
                {
                    Logger.Error(string.Format("Failed to launch application on PS4 device '{0}'. Get targets by host failed", Address));
                    return(false);
                }

                ITarget TargetDevice = Targets.GetValue(0) as ITarget;
                if (TargetDevice == null)
                {
                    Logger.Error(string.Format("Failed to launch application on PS4 device '{0}'. Get target device failed", Address));
                    return(false);
                }

                if (TargetDevice.PowerStatus != ePowerStatus.POWER_STATUS_ON)
                {
                    TargetDevice.PowerOn();
                }

                TargetDevice.Connect();

                Array Processes = (Array)TargetDevice.ProcessInfoSnapshot;



                IProcess Process = TargetDevice.LoadProcess(eDevice.DEVICE_RAW, string.Empty, (uint)eLoadOptions.LOAD_OPTIONS_DEFAULT, 0, CmdLineArguments, @"O:\192.168.1.181\NPXX53530"); // DeploymentPath);

                ProcessID = Process.Id;

                if (ProcessID == 0)
                {
                    Logger.Error(string.Format("Failed to launch application on PS4 device '{0}'. Process id is 0", Address));
                    return(false);
                }

                new Task(() => AsyncMonitorProcess(TargetDevice, Process)).Start();

                return(true);
            }
            catch (Exception e)
            {
                Logger.Error(string.Format("Failed to launch application on PS4 device '{0}'. Ex: {1}", Address, e.Message));
            }

            return(false);
        }
        private ITarget GetTarget(ORTMAPI TM, string TargetString)
        {
            ITarget Target = null;

            if (String.IsNullOrEmpty(TargetString) || TargetString.Equals("default", StringComparison.OrdinalIgnoreCase))
            {
                // Use default
                Target = TM.DefaultTarget;
            }
            else
            {
                // Find target
                Array Targets = (Array)TM.GetTargetsByName(TargetString);
                if (Targets.Length == 0)
                {
                    Targets = (Array)TM.GetTargetsByHost(TargetString);
                }

                if (Targets.Length != 0)
                {
                    Target = (ITarget)Targets.GetValue(0);
                }

                if (Target == null)
                {
                    Console.WriteLine("No target " + TargetString);
                }
            }

            return(Target);
        }