powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запуск консольного приложения и считывание с него текста
7 сообщений из 7, страница 1 из 1
Запуск консольного приложения и считывание с него текста
    #38427385
J_Mnemonic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую всех читающих!
У меня следующая ситуация: есть консольное приложение (написанное на C++ не мной), которое я запускаю из своего сервиса.
Мне нужно дождаться когда оно выполнит определённые действия и в нём появится текст ответа. Его мне нужно считать.
Подскажите пожалуйста? как это можно организовать.

Месяца два назад была у меня похожая проблема, и тогда я так и не смог считать текст этим кодом.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
p = new System.Diagnostics.Process();
p.StartInfo.FileName = "C:\\ПУТЬ\\PCATTCP.exe";
p.StartInfo.Arguments = "-c -r -p "+ ttcpPort.ToString();
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.Start();
StreamReader myStreamReader = p.StandardOutput;
string output = myStreamReader.ReadToEnd();



но тогда я нашёл обходной путь. Сейчас же его нет (
Люди добрые, не оставьте в трудный час :)
...
Рейтинг: 0 / 0
Запуск консольного приложения и считывание с него текста
    #38427400
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Запуск консольного приложения и считывание с него текста
    #38427419
J_Mnemonic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser,
спасибо за подсказку, но кажется я уже как то так пробовал (ещё когда в первый раз столкнулся с проблемой).
Но на всякий случай сделал щас ещё раз - не срабатывает событие.
Хотя вижу что консольное приложение запускается, но в консоли нету текста, который моментально и без проблем появляется если запустить это приложение отдельно из командной строки.
Правильно ли я всё сделал?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = "PCATTCP.exe";
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.Arguments = " -r";
            p.StartInfo.UseShellExecute = false;
            p.OutputDataReceived += new DataReceivedEventHandler(OutputCatcherHandler);
            p.Start();
        }

        private static void OutputCatcherHandler(object sendingProcess,
            DataReceivedEventArgs outLine)
        {
            if (!String.IsNullOrEmpty(outLine.Data))
            {
                Console.WriteLine(outLine.Data);
            }
        }
...
Рейтинг: 0 / 0
Запуск консольного приложения и считывание с него текста
    #38427430
J_Mnemonic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не могу понять, куда девается StandardOutput который редиректю...
мало того, как то я перехожу на строчку
Код: c#
1.
string sr = p.StandardOutput.ReadLine();



всё напрочь виснет
...
Рейтинг: 0 / 0
Запуск консольного приложения и считывание с него текста
    #38427444
J_Mnemonic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для наглядности прилагаю ту самую аппликуху, которую вызываю.
Из коммандной строки вызывается так
PCATTCP.exe -r

и вы увидите текст, который она выводит.

А после попробуйте считать его из своего C# кода...
...
Рейтинг: 0 / 0
Запуск консольного приложения и считывание с него текста
    #38427470
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
J_Mnemonic,

ну х.з., какая-то "неправильная" аппликуха, вот так перенаправляется, но как ошибка :)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
            string output = "", error = "";
            var p = new System.Diagnostics.Process();
            p.StartInfo.FileName = @"C:\temp\PCATTCP.exe";
            p.StartInfo.Arguments = "-?";
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.OutputDataReceived += (s, e) => {
                if (!string.IsNullOrEmpty(e.Data))
                    output += e.Data + Environment.NewLine;
            };
            p.ErrorDataReceived += (s, e) => {
                if (!string.IsNullOrEmpty(e.Data))
                    error += e.Data + Environment.NewLine;
            };
            p.Start();
            p.BeginErrorReadLine();
            p.BeginOutputReadLine();
            p.WaitForExit();
            Debug.WriteLine("=========== output:");
            Debug.WriteLine(output);
            Debug.WriteLine("=========== error:");
            Debug.WriteLine(error);
...
Рейтинг: 0 / 0
Запуск консольного приложения и считывание с него текста
    #38427734
J_Mnemonic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LR,
p.StartInfo.Arguments = "-?";

так оно действительно слушается. а с
p.StartInfo.Arguments = "-r"; - нет
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запуск консольного приложения и считывание с него текста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]