Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
17 / 17 / 3
Регистрация: 09.12.2011
Сообщений: 64

Считать данные потока вывода из другой консоли

03.11.2014, 01:43. Показов 4791. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть приложение, написанное как консоль. Возможно даже не на .NET. Но она делает очень(!) важную для меня операцию. Код примерно следующий:
C#
1
2
3
String text = Console.ReadLine();
text = Action(text);
Console.WriteLine(text);
У меня программа: обычная форма. Послать данные в консоль и съэмулировать нажатие Enter - не составит труда, но возник вопрос:
Можно ли как то считать информацию выводимую в эту консоль, третьей строчкой кода.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.11.2014, 01:43
Ответы с готовыми решениями:

Считать данные из файла, записать в другой файл
string INPUT = @"D:\input.txt"; string OUTPUT = @"D:\output.txt"; string line; ...

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

не могу считать из потока данные
Ребят,помогите разобраться. Вот код. #include <iostream> #include <Windows.h> #include <Ole2.h> #include <Objbase.h> ...

3
675 / 421 / 44
Регистрация: 09.07.2012
Сообщений: 1,419
03.11.2014, 07:59
Есть, на стэкОверфлоу

http://msdn.microsoft.com/en-u... utput.aspx

C#
1
2
3
4
5
6
7
8
9
10
Process compiler = new Process();
compiler.StartInfo.FileName = "csc.exe";
compiler.StartInfo.Arguments = "/r:System.dll /out:sample.exe stdstr.cs";
compiler.StartInfo.UseShellExecute = false;
compiler.StartInfo.RedirectStandardOutput = true;
compiler.Start();    
 
Console.WriteLine(compiler.StandardOutput.ReadToEnd());
 
compiler.WaitForExit();
Год назад писал программу, которая в окне эмулировала консоль с подстановкой команд как VisualStudio.
1
17 / 17 / 3
Регистрация: 09.12.2011
Сообщений: 64
03.11.2014, 19:19  [ТС]
Помойму то что нужно. Правда на функции Start() ничего не происходит. Я проверил на других прогах - аналогично, так что думаю надо что то похимичить, ведь запускать процессы я раньше мог без проблем.

Добавлено через 8 часов 10 минут
Непонятно почему, но выбивает System.InvalidOperationException. При этом если поле RedirectStandardOutput поставить в false, то отображается, но использовать никак не получится. "Поток StandardOut не был перенаправлен или процесс еще не был запущен"
0
675 / 421 / 44
Регистрация: 09.07.2012
Сообщений: 1,419
04.11.2014, 13:19
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Код древний, использовать как наглядное пособие рабочего примера.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
private void CMDRunner()
        {
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.CreateNoWindow = true;
            //p.StartInfo.StandardOutputEncoding = System.Text.Encoding.UTF8;
            int lcid = GetSystemDefaultLCID();
            var ci = System.Globalization.CultureInfo.GetCultureInfo(lcid);
            var page = ci.TextInfo.OEMCodePage;
            p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(page);
            p.Start();
            //if (GetMes1 != null) { GetMes1(e.Data); }
            //p.OutputDataReceived += (s, e) =>
            try
            {
                p.BeginOutputReadLine();
                p.BeginErrorReadLine();
                p.StandardInput.AutoFlush = true;
                p.OutputDataReceived += (s, e) =>
                { Dispatcher.Invoke(new Action(() => { TextBlock_Out.AppendText(e.Data + "\n"); TextBlock_Out.ScrollToEnd(); })); };
                p.ErrorDataReceived += (s, er) =>
                { Dispatcher.BeginInvoke(new Action(() => { TextBlock_Out.AppendText("Error: " + er.Data + "\n"); TextBlock_Out.ScrollToEnd(); })); };
                while (true)
                { // "\x3" - Ctrl+C
                    if (p.HasExited == true) { break; }
                    if (COMMANDHERE.ToString() == "1")
                    //http://stackoverflow.com/questions/2274668/how-to-send-keys-instead-of-characters-to-a-process
                    {
                        COMMANDHERE.Clear(); break;
                        //Dispatcher.BeginInvoke(new Action(() => CMDProcessSendCtrlC()));
                        //GenerateConsoleCtrlEvent(CTRL_C_EVENT, (uint)p.Id);
                        //p.StandardInput.WriteLine("\x3");
                    }
                    if (COMMANDHERE.Length != 0)
                    {
                        p.StandardInput.WriteLine(COMMANDHERE);
                        COMMANDHERE.Clear();
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
            finally
            {
                Dispatcher.BeginInvoke(new Action(() => Application.Current.Shutdown()));
            }
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.11.2014, 13:19
Помогаю со студенческими работами здесь

Не могу правильно считать данные из потока
Привет всем. У меня есть такая задача. На вход поступает дробь вида 1 1/4 (например). Эта дробь может быть представлена как только целой...

Как правильно считать данные из стандартного входного потока в С++?
Как правильно считать данные из стандартного входного потока в С++? Из стандартного входного потока в C++ вводится: целое число, точка,...

Как прочитать данные из потока вывода другого процесса
Как получить то, что выводит командная строка (прочитать выводной поток другого процесса)

Подскажите, пожалуйста, как получить данные из потока вывода командной строки Linux
С помощью Java обращаюсь к исполняемому файлу sh в Linux package javaexec; import java.io.IOException; /** * * @author...

Как передать данные из одного потока в другой?
Есть отдельный поток для чтения данных и основной поток для обработки данных. Из этого потока данные нужно передать в основной поток. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru