Отлов нажатия сочетания клавиши для продолжения или запуска кода на C# консольное приложение

Столкнулся с проблемой написал код для перезапуска приложения по сочетанию клавиши, код работает когда консоль открыта, но как только приложение запускается оно становится активным поверх консоли и консоль становится не активной, она больше не воспринимает сочетание, помогите с промблемой вот код

using System; 
using System.Threading;
using System.Diagnostics; 



class ProcessDemo
{

    public static void Main()
    {

        

            M1:                         //Точка возврата
            ConsoleKeyInfo keypress;

            keypress = Console.ReadKey();


            if ((ConsoleModifiers.Control & keypress.Modifiers) != 0)
            {
                if (keypress.Key == ConsoleKey.X)
                    Console.WriteLine("Нажаты Ctrl+Х, происходит запуск"); // Ожидание нажатия сочетания /\ Сочетание контрл + Х
            }
        
        



        Console.WriteLine("All process PID for 1C:");
        //Вывод всех айди запущенных индификаторов процесса 1С использовал по началу написания, можно убрать, но он отображает имя индификатора процесса
        Process[] localByName = Process.GetProcessesByName("1cv8");             //Акцентируем внимание только на процесс 1С:Предприятие
        int i = localByName.Length;                                                // i = "1cv8t" имя индификатора

        if (i > 0)                                                                // *ЦИКЛ*  Если 1С запущена, тогда
        {                                                                          //     вывод айди Приложения(-ий)
            while (i > 0)
            {                                                                      // поиска и вывод айди с наименованием Блокнот
                Console.WriteLine(localByName[i - 1].Id.ToString());
                i -= 1;
                Console.WriteLine("Пожалуйста, ожидайте и не выключайте компьютер до завершения операции!\n Выполняется процесс закрытия 1С:Предприятие.");


                foreach (var process in Process.GetProcessesByName("1cv8"))       // Цикл поочередного обращения по имени индификатора для закрытия процесса
                {

                    process.Kill();
                    goto M1; // Возврат
                }
            }
            Thread.Sleep(5000);
            Console.WriteLine("Пожалуйста, ожидайте и не выключайте компьютер до завершения операции!\n Выполняется запуск процесса 1С:Предприятие.");
            Process OneC = Process.Start(new ProcessStartInfo(@"C:\autorun for 1c\CStart.lnk") { UseShellExecute = true }); // Запуск указанной программы через путь

        }
        else
        {
            Console.WriteLine("Пожалуйста, ожидайте и не выключайте компьютер до завершения операции!\n Выполняется запуск процесса 1С:Предприятие.");
            Thread.Sleep(5000);
            Process OneC = Process.Start(new ProcessStartInfo(@"C:\autorun for 1c\CStart.lnk") { UseShellExecute = true }); // Запуск указанной программы через путь
            Console.WriteLine("Started notepad process Id = " + OneC.Id);                                                    //Процесс блокнот был запущен, Айди процесса = Х
            goto M1; // Возврат
        }
    }
}

 

0 ответов

Другие вопросы по тегам