Запустить стороннее приложение и вернуть себе управление - C#

Узнай цену своей работы

Формулировка задачи:

Консольное приложение запускает с параметром сторонний консольный процесс, который в свою очередь запускает нужное мне приложение. После запуска этого приложения запустившая его консоль остаётся висеть в процессах. Можно ли как-то после запуска этого приложения вернуть себе управление, чтобы закрыть эту консоль?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            const string rus = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя ";
            const string lat = "abvgdeYZzijklmnoprstufhcCWVXyxEUA_";
            string exe = System.Reflection.Assembly.GetExecutingAssembly().Location;
            string tut = Path.GetDirectoryName(exe);
            string sourse = Environment.GetCommandLineArgs()[1].ToLower();
            //string sourse = "ТУ_mem4_uuk.bit";
            string ext = Path.GetExtension(@sourse).ToLower();
            string dest = Path.GetFileName(@sourse);
            //string sourse = "непейводыизунитаза";
            foreach (char ch in dest)
                if (rus.Contains(ch))
                {
                    char lch = lat[rus.IndexOf(ch)];
                    dest=dest.Replace(ch, lch);
                }
            dest = tut + '\\' + dest;
            string impactPath = File.ReadAllLines(tut + '\\' + "impact.p")[0];
            File.Copy(sourse, dest, true);
            try
            {
                Process pr = new Process();
                pr.StartInfo.FileName = impactPath;
                switch (ext)
                {
                    case ".jed":
                        {
                            pr.StartInfo.Arguments = "-j " + dest;
                            break;
                        }
                    case ".bit":
                        {
                            pr.StartInfo.Arguments = "-b " + dest +" -mode sserial";
                            break;
                        }
                    default:
                        {
                            pr.StartInfo.Arguments = "-j " + dest;
                            break;
                        }
                }
                pr.Start();
            }
            catch { };
 
//Вот сюда уже не попадаю, так как запущенный мной процесс перехватывает управление
            Process[] impact = Process.GetProcessesByName("_impact");
            foreach (Process p in impact)
                p.Kill();
        }
    }
}
Такшта вот. Полезно иногда не получить сразу ответ на животрепещущий вопрос. Вынуждает посветить фонариком внутри черепушки. Кажется, слышал где-то выражение "многопоточные приложения". Собрал походную котомку, пошёл искать ответов. Такшта, не поминайте лихом, если затеряюсь в дебрях собственного невежества.

Решение задачи: «Запустить стороннее приложение и вернуть себе управление»

textual
Листинг программы
finally{
Process[] impact = Process.GetProcessesByName("_impact");
            foreach (Process p in impact)
                p.Kill();
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5
Похожие ответы