Форум программистов, компьютерный форум, киберфорум
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.04.2016
Сообщений: 1
1

Перенаправление ввода-вывода консоли (pipes)

29.01.2017, 18:21. Показов 1136. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть у нас реализованная процедура
Delphi
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
54
procedure THIWinExec._work_doConsoleExec;
var
sa: TSECURITYATTRIBUTES;
si: TSTARTUPINFO;
pi: TPROCESSINFORMATION;
Res: Boolean;
CommandLine:string;
FN,params:string;
begin
Fn := ReadString(_Data,_data_FileName,_prop_FileName);
Params := ReadString(_Data,_data_Params,_prop_Param);
CommandLine := Fn + ' ' + Params;
 
Terminate;
 
sa.nLength := sizeof(sa);
sa.bInheritHandle := true;
sa.lpSecurityDescriptor := nil;
 
CreatePipe(hPipeInputRead, hPipeInputWrite, @sa, 0);
CreatePipe(hPipeOutputRead, hPipeOutputWrite, @sa, 0);
CreatePipe(hPipeErrorsRead, hPipeErrorsWrite, @sa, 0);
 
ZeroMemory(@si, SizeOf(si));
ZeroMemory(@pi, SizeOf(pi));
 
si.cb := SizeOf(si);
si.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
si.wShowWindow := SW_HIDE;
si.hStdInput := hPipeInputRead;
si.hStdOutput := hPipeOutputWrite;
si.hStdError := hPipeErrorsWrite;
 
Res := CreateProcess(nil, PChar(CommandLine), nil, nil, true,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, si, pi);
 
// Procedure will exit if CreateProcess fail
if not Res then
begin
CloseHandle(hPipeInputRead);
CloseHandle(hPipeOutputWrite);
CloseHandle(hPipeErrorsWrite);
CloseHandle(hPipeInputWrite);
CloseHandle(hPipeOutputRead);
CloseHandle(hPipeErrorsRead);
hProcess := 0;
Exit;
end;
 
hProcess := pi.hProcess; FRead := true;*
hReadThread := CreateThread(nil,1024,@ReadFunc,Self,0,dwReadThreadID);
 
_hi_onEvent(_event_onExec);
end;
Чтобы показать консоль после открытия нам достаточно установить значение si.wShowWindow := SW_NORMAL.
Но нужно ещё и оставить стандартный вывод, не перенаправляя его никуда. Как это сделать?
P.S. ТОЛЬКО вывод)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2017, 18:21
Ответы с готовыми решениями:

Перенаправление консольного вывода
Думал - просто. Ан нет. Есть программа - консольный экзешник. Соответственно, вывод тоже...

Перехват вывода консоли
Добрый день форумчане выручайте.Перехватываю вывод консоли.Все работает вывод перехватывается,но...

Перенаправление вывода с консоли
Здравствуйте! Пытаюсь вот разобраться с перенаправлением вывода с консоли... А точнее, хочу...

Перенаправление вывода с консоли в RichTextBox
Читающему доброе время суток. Когда то пришлось столкнуться с консолью, теперь столкнулся с...

0
29.01.2017, 18:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2017, 18:21
Помогаю со студенческими работами здесь

Перенаправление вывода с консоли в richTextBox
Здравствуйте, столкнулся с проблемой. Нужно, чтобы вывод с консоли перенаправлялся в richTextBox,...

Запуск консоли и перенаправление вывода
Здравствуйте, уважаемые форумчане! Пишу программку, создающую процесс cmd.exe и...

Перенаправление ввода-вывода
Сабж собсно. Как? Нужно, чтобы поток ошибок направлялся в файл, а не светился юзерам на сайте....

Перенаправление ввода/вывода
Здравствуйте, все! Есть несколько exe-файлов, которые надо прогнать через ряд тестов (дети писали...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru