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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
blv
0 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 4
15.02.2011, 19:43     Перенаправление стандартных потоков ввода/вывода для внешней программы #1
Я вот где-то прочитал как перенаправить стандартные потоки ввода/вывода на внешнюю программу в дос. Переделал код под 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2011, 19:43     Перенаправление стандартных потоков ввода/вывода для внешней программы
Посмотрите здесь:

Перевод стандартных потоков ввода/вывода в файлы C++
C++ Builder Перехват ввода-вывода другой программы
C++ Linux c++ unix перенаправление консольного ввода\вывода
Перехват потоков ввода/вывода C++ WinAPI
Множественное наследование с использованием абстрактных базовых классов, файлового ввода-вывода с применением потоков С++, функций обработки исключи C++
Перехват потоков ввода/вывода C++
C++ Связывание потоков ввода-вывода
C++ Итераторы: зачем используется оператор инкремента для потоков вывода?
C++ Ошибка компиляции модульной программы ввода вывода
C++ WinAPI Mailslot и перенаправление ввода/вывода
Составить блок-схему для программы ввода/вывода сишных строк C++
Синхронизация потоков ввода и вывода в Eclipce CDT C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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