Как скрыть окно CMD, созданное в результате этого процесса? - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь запустить исполняемый файл как часть моей программы, которая будет неоднократно вызываться как обработчик событий. В настоящий момент первая и последняя закомментированные строки запускают исполняемый файл так, как должны, проблема, с которой я сталкиваюсь, состоит в том, чтобы попытаться сделать так, чтобы у пользователя была возможность скрыть этот исполняемый файл, когда он всплывает (делается с помощью радио кнопка)

Console.WriteLine("Generated Instruction: " + arguments);                           
             //var proc = System.Diagnostics.Process.Start(chartLocation + @"\MODUS CHaRT CMD.exe", arguments ); // Run Command Line instruction
            Process myProc = new Process();

            if (hideChartStatus)  /* make the process invisible */
            {
                try
                {
                    myProc.StartInfo.CreateNoWindow = true;
                    myProc.StartInfo.UseShellExecute = false;
                    Console.WriteLine("Invisible CHART window generated");
                }
                catch
                {
                    Console.WriteLine("Could not hide CHaRT window");
                }                
            }
            else
            {
                myProc.StartInfo.CreateNoWindow = false;
            }

            myProc.StartInfo.WorkingDirectory = chartLocation;
            myProc.StartInfo.FileName = "\\MODUS CHaRT CMD.exe";
            myProc.StartInfo.Arguments = arguments;
            myProc.Start();

            //myProc = myProc.Start(chartLocation + @"\MODUS CHaRT CMD.exe", arguments);
            //proc.WaitForExit();
            myProc.WaitForExit();

Это то, что у меня так далеко, но я получаю ошибку "System.ComponentModel.Win32Exception: 'Система не может найти указанный файл'"

в myProc.start ();

Я предполагаю, что это связано с тем, как я использую имя файла и рабочий каталог?

Кто-нибудь знает правильный синтаксис для этого?

1 Ответ

0 голосов
/ 03 января 2019

Игнорируй меня всех, я идиот.

Основываясь точнее на том, что здесь делается: https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.start?view=netframework-4.7.2

Правильное использование:

//myProc.StartInfo.WorkingDirectory = chartLocation;
            myProc.StartInfo.FileName = chartLocation + @"\MODUS CHaRT CMD.exe";
            myProc.StartInfo.Arguments = arguments;
            myProc.Start();
...