public static IEnumerable <UnityProcessInfo> GetAttachableProcesses(string targetName)
        {
            var match     = Regex.Match(targetName, "\\(([0-9]+)\\)");
            var processId = -1;

            if (match.Success)
            {
                processId  = Convert.ToInt32(match.Groups[1].Value);
                targetName = targetName.Substring(0, targetName.IndexOf("(") - 1);
            }

            UnityProcessDiscovery.GetProcessOptions options = UnityProcessDiscovery.GetProcessOptions.All;

            if (!targetNameToProcessName.TryGetValue(targetName.ToLower(), out var processName))
            {
                processName = targetName;
            }
            else
            {
                options = processName == "Unity Editor"
                    ? UnityProcessDiscovery.GetProcessOptions.Editor
                    : UnityProcessDiscovery.GetProcessOptions.Players;
            }

            var processes = UnityProcessDiscovery.GetAttachableProcesses(options);

            processes.ForEach(p => Log.Write("Found Unity process: " + p.Name + " (" + p.Id + ")"));

            return(processId == -1
                ? processes.Where(p => p.Name.Contains(processName))
                : processes.Where(p => p.Name.Contains(processName) && p.Id == processId));
        }
Beispiel #2
0
        public static IEnumerable <UnityProcessInfo> GetAttachableProcesses(string targetName)
        {
            string processName;

            if (!targetNameToProcessName.TryGetValue(targetName.ToLower(), out processName))
            {
                return(null);
            }

            UnityProcessDiscovery.GetProcessOptions options = UnityProcessDiscovery.GetProcessOptions.All;

            if (processName == "Unity Editor")
            {
                options = UnityProcessDiscovery.GetProcessOptions.Editor;
            }
            else
            {
                options = UnityProcessDiscovery.GetProcessOptions.Players;
            }

            var processes = UnityProcessDiscovery.GetAttachableProcesses(options);

            processes.ForEach(p => Log.Write("Found Unity process: " + p.Name + " (" + p.Id + ")"));

            return(processes.Where(p => p.Name.Contains(processName)));
        }
        public static IEnumerable <UnityProcessInfo> GetAttachableProcesses(string targetName)
        {
            var match     = Regex.Match(targetName, "\\(([0-9]+)\\)");
            var processId = -1;

            if (match.Success)
            {
                processId  = Convert.ToInt32(match.Groups[1].Value);
                targetName = targetName.Substring(0, targetName.IndexOf("(") - 1);
            }

            UnityProcessDiscovery.GetProcessOptions options = UnityProcessDiscovery.GetProcessOptions.All;

            if (!targetNameToProcessName.TryGetValue(targetName.ToLower(), out var processName))
            {
                processName = targetName;
            }
            else
            {
                options = processName == "Unity Editor"
                    ? UnityProcessDiscovery.GetProcessOptions.Editor
                    : UnityProcessDiscovery.GetProcessOptions.Players;
            }

            Log.Write($"Trying to find all {options}");
            var processes = UnityProcessDiscovery.GetAttachableProcesses(options);

            processes.ForEach(p => Log.Write("Found Unity process: " + p.Name + " (" + p.Id + ")"));

            var resProcesses = processId == -1
                ? processes.Where(p => p.Name.Contains(processName)).ToArray()
                : processes.Where(p => p.Name.Contains(processName) && p.Id == processId).ToArray();

            if (resProcesses.Length == 0)
            {
                Log.Write($"Could not find the correct process name: {targetName}");
                Log.Write("These are the one that could be found: ");
                processes = UnityProcessDiscovery.GetAttachableProcesses();
                processes.ForEach(process => Log.Write($"{process.Name} : {process.Id}"));
            }

            return(resProcesses);
        }