Страница 1 из 1

C/C++ вопрос....

Добавлено: 27 май 2004, 14:04
папа Карло
есть с++ прога которая исполняет консольное приложение с помощью system из stdlib.h

требуется перехватить вывод той проги что исполняется в текстовую строку (char *buffer[8000])

возможно?

Добавлено: 27 май 2004, 14:19
vg
есть с++ прога которая исполняет консольное приложение с помощью system из stdlib.h

требуется перехватить вывод той проги что исполняется в текстовую строку (char *buffer[8000])

возможно?
Папа,
1) При чём здесь С/C++? А если бы исполнимый код был написан на Delphi? Если я правильно тебя понял, то есть *.exe

2) char *buffer[8000] - в такую "строку" не то что перехватить, а даже записать ничего не возможно :lol: Ты уж поверь :lol: Хакнуть себя можно. Спроси у брайн дамаджа учебник :lol:

Re: C/C++ вопрос....

Добавлено: 27 май 2004, 15:25
Woozy
папа Карло писал(а):требуется перехватить вывод той проги что исполняется в текстовую строку
Предполагаю нормальный консольный вывод. Можно и всерьёз, а можно и просто попытаться перенаправить консольный вывод в файл средствами OS.

Код: Выделить всё

MisteryProgram.exe > output.txt
Но это для нормального консольного вывода, что на самом деле (?)... По идее, вызов system из stdlib "захватит" консольный вывод, того процесса что вызывается.

Получив файл можно творить всё что угодно... А ведь можно и вовсе без файла: stdout в stdin! Что-то вроде:

Код: Выделить всё

Something.exe | MisteryProgram.exe
Боюсь соврать, но идеология заимствована из Unix. Посмотрю статью, давно её читал...

Посмотрел, вроде как здесь сделано: http://dogma.net/markn/articles/bwt/ari.cpp

Вот так читает stdin:

Код: Выделить всё

    for (;;) {                                  /* Loop through characters. */
        int ch; 
        ch = getc(stdin);                       /* Read the next character. */
        if (ch==EOF) break;                     /* Exit loop on end-of-file.*/

                             // делай что нибудь с ch
    }
Естественно, любые функции, что читают потоки подойдут, необязательно getc.

Совсем без API.

Добавлено: 27 май 2004, 15:28
папа Карло
нашел плагин который делает все что мне надо :) есть даже исходник.... смысл такой.... исполняется прога в окне, окно гасится АПИ винды.... вывод перенаправляется во временный файл.... из него происходит зачитывание в строку, но не более чем ты говоришь..... это все оформлено в виде плагина, что мне надо :) так что все уже подключил :)

Добавлено: 28 май 2004, 06:10
dima
я такое делал. Вроде telnet сервера. Соединяешься с ним, он запускает cmd.exe а stderr и stdout отылаешь назад клиенту по TCP/IP. Почти весь код нашел на codeguru.

Год назад

Добавлено: 28 май 2004, 06:29
папа Карло
dima писал(а):я такое делал. Вроде telnet сервера. Соединяешься с ним, он запускает cmd.exe а stderr и stdout отылаешь назад клиенту по TCP/IP. Почти весь код нашел на codeguru.

Год назад
ок. посмотрю для общего развития. :) мерси. :)

Добавлено: 28 май 2004, 15:45
temp-ii
папа Карло писал(а):
dima писал(а):я такое делал. Вроде telnet сервера. Соединяешься с ним, он запускает cmd.exe а stderr и stdout отылаешь назад клиенту по TCP/IP. Почти весь код нашел на codeguru.

Год назад
ок. посмотрю для общего развития. :) мерси. :)
[trn]dlja togo zhe razvitija posmotri[/trn] CreateProcess(), [trn]parameter[/trn] STARTUPINFO, [trn]polja[/trn] hStdXxx ;-)

Добавлено: 28 май 2004, 22:21
папа Карло
temp-ii писал(а):
папа Карло писал(а):
dima писал(а):я такое делал. Вроде telnet сервера. Соединяешься с ним, он запускает cmd.exe а stderr и stdout отылаешь назад клиенту по TCP/IP. Почти весь код нашел на codeguru.

Год назад
ок. посмотрю для общего развития. :) мерси. :)
[trn]dlja togo zhe razvitija posmotri[/trn] CreateProcess(), [trn]parameter[/trn] STARTUPINFO, [trn]polja[/trn] hStdXxx ;-)
не программер я... не надо мне наверное так глубоко :)

Добавлено: 31 май 2004, 10:23
Lepsik
вы будете смеятся, но это тоже делается с помощью пайпов :lol: