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

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

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

Консольное приложение запускает с параметром сторонний консольный процесс, который в свою очередь запускает нужное мне приложение. После запуска этого приложения запустившая его консоль остаётся висеть в процессах. Можно ли как-то после запуска этого приложения вернуть себе управление, чтобы закрыть эту консоль?
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Diagnostics;
  7. namespace ConsoleApplication1
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. const string rus = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя ";
  14. const string lat = "abvgdeYZzijklmnoprstufhcCWVXyxEUA_";
  15. string exe = System.Reflection.Assembly.GetExecutingAssembly().Location;
  16. string tut = Path.GetDirectoryName(exe);
  17. string sourse = Environment.GetCommandLineArgs()[1].ToLower();
  18. //string sourse = "ТУ_mem4_uuk.bit";
  19. string ext = Path.GetExtension(@sourse).ToLower();
  20. string dest = Path.GetFileName(@sourse);
  21. //string sourse = "непейводыизунитаза";
  22. foreach (char ch in dest)
  23. if (rus.Contains(ch))
  24. {
  25. char lch = lat[rus.IndexOf(ch)];
  26. dest=dest.Replace(ch, lch);
  27. }
  28. dest = tut + '\\' + dest;
  29. string impactPath = File.ReadAllLines(tut + '\\' + "impact.p")[0];
  30. File.Copy(sourse, dest, true);
  31. try
  32. {
  33. Process pr = new Process();
  34. pr.StartInfo.FileName = impactPath;
  35. switch (ext)
  36. {
  37. case ".jed":
  38. {
  39. pr.StartInfo.Arguments = "-j " + dest;
  40. break;
  41. }
  42. case ".bit":
  43. {
  44. pr.StartInfo.Arguments = "-b " + dest +" -mode sserial";
  45. break;
  46. }
  47. default:
  48. {
  49. pr.StartInfo.Arguments = "-j " + dest;
  50. break;
  51. }
  52. }
  53. pr.Start();
  54. }
  55. catch { };
  56. //Вот сюда уже не попадаю, так как запущенный мной процесс перехватывает управление
  57. Process[] impact = Process.GetProcessesByName("_impact");
  58. foreach (Process p in impact)
  59. p.Kill();
  60. }
  61. }
  62. }
Такшта вот. Полезно иногда не получить сразу ответ на животрепещущий вопрос. Вынуждает посветить фонариком внутри черепушки. Кажется, слышал где-то выражение "многопоточные приложения". Собрал походную котомку, пошёл искать ответов. Такшта, не поминайте лихом, если затеряюсь в дебрях собственного невежества.

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

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

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


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

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

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы