Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
blv
0 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 4
#1

Перенаправление стандартных потоков ввода/вывода для внешней программы - C++

15.02.2011, 19:43. Просмотров 1819. Ответов 0
Метки нет (Все метки)

Я вот где-то прочитал как перенаправить стандартные потоки ввода/вывода на внешнюю программу в дос. Переделал код под winapi, но не работает. Прошу вас помочь. Вот код:
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
#include <windows.h>
#include <stdio.h>
#include <string.h>
 
#define STD_IN      0
#define STD_OUT     1
 
#define PIPESIZE    4096
 
HANDLE hPipeIn, hPipeOut;
HANDLE sInHandle, sOutHandle;
HANDLE nInHandle, nOutHandle;
 
char buf [PIPESIZE];
 
void check (char *progName, char *input, char *output)
{
    DuplicateHandle(nInHandle, &sInHandle, NULL, NULL, NULL, NULL, NULL);
    DuplicateHandle(nOutHandle, &sOutHandle, NULL, NULL, NULL, NULL, NULL);
    CreatePipe(&hPipeIn, &hPipeOut, NULL, PIPESIZE);
    DuplicateHandle(hPipeIn, nInHandle, NULL, NULL, NULL, NULL, NULL);
    DuplicateHandle(hPipeOut, nOutHandle, NULL, NULL, NULL, NULL, NULL);
    nInHandle=hPipeIn;
    nOutHandle=hPipeOut;
    strcpy(buf, "dir\nexit\n");
    unsigned long btWrited;
    WriteConsole(hPipeOut, buf, strlen(buf), &btWrited, NULL);
    WriteConsole(sOutHandle, input, strlen(input), &btWrited, NULL);
    printf("Eta stroka ne vivoditsya na zapuskayemuyu programmu!!!\n");
    system(progName);
    return;
}
 
int main (void)
{
    check("cmd.exe", "cmd\n", NULL);
    return 0;
}
Прошу помочь.
Прочитал: http://ru2.halfos.ru/rdm2/articles/dupstd.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2011, 19:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перенаправление стандартных потоков ввода/вывода для внешней программы (C++):

Перехват ввода-вывода другой программы - C++ Builder
Имеется игровой сервер, запускается ввиде консоли. В частности, сервер игры CS Source. Нужно сделать так, чтобы я мог получать всю...

C++ разработка программы для ввода информации - C++ Builder
Разработать программу для ввода информации о продажах торговой фирмы за несколько последовательных лет (количество лет не более 20), вывода...

Узнать о закрытии внешней программы - C++ Builder
Я запускаю внешнюю программу при помощи ShellExecute. Как узнать, что внешняя программа закрывается? Можно ли вообще перехватывать любые...

Перехватить событие из внешней программы - C++ Builder
Подскажите где можно подробно почитать про события (по русски). Суть вопроса нужно перехватить событие (не знаю какое) чтобы подменить...

Доступ к компонентам внешней программы - C++ Builder
Всем привет, мне надо обратиться к внешней программе(это я умею) и добраться в нем к компоненту Edit1, записать в него нужный текст ...

перегруженые операторы ввода-вывода - C++ Builder
очень прошу помочь с перегруженными операторами ввода-вывода ну например для списка с параметром Student есть простенькая структура: ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2011, 19:43
Привет! Вот еще темы с ответами:

Имитация нажатия кнопкой мыши в определенном окне внешней программы - C++ Builder
Нужна помощь вот в каков вопросе: как с имитировать нажатие мышкой в определенном окне(например в IE) Делал так: 1)Искал окно ...

Передача потока ввода/вывода в функцию - C++ Builder
Нужно перегрузить оператор ввода и вывода. С перегрузкой проблем не возникало до этого момента. Есть класс. #include &lt;iostream&gt; ...

Протекает наложенное событие ввода/вывода - C++ Builder
Ребята пытаюсь создать программно пользователя с правами администратора. Вот код #include &lt;lmaccess.h&gt; #include &lt;lm.h&gt; void...

Создать диалоговое приложение, в котором должна быть кнопка Exit для завершения программы, поле для ввода - Visual C++
Условие задачи следующее: Создать диалоговое приложение, в котором должна быть кнопка Exit для завершения программы, поле для ввода...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru