Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.11;
Скачать: CL | DM;

Вниз

Уважаемые Мастера, как можно перехватить консольный вывод.   Найти похожие ветки 

 
Mitrofan   (2002-02-21 12:12) [0]

К примеру, запускаем из своей программы с помощью функции CreateProcess(...) какое-то консольное приложение, которое выводит некую информацию. И как эту информацию заполучить в свою программу, например в Memo ее выводить ???
Заранее спасибо. Андрей.


 
Виктор Щербаков ©   (2002-02-21 12:14) [1]

Смотри описание структуры STARTUPINFO.


 
Mitrofan   (2002-02-21 20:08) [2]

В Msdn я нашел такую вещь
typedef struct _STARTUPINFO {
DWORD cb;
LPTSTR lpReserved;
LPTSTR lpDesktop;
LPTSTR lpTitle;
DWORD dwX;
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow;
WORD cbReserved2;
LPBYTE lpReserved2;
HANDLE hStdInput;
HANDLE hStdOutput;
HANDLE hStdError;
}

И если я правильно думаю, то наверно это hStdOutput, т.е. хэнд окна куда надо выводить. Неужели я прав ? :) Или заблуждаюсь.


 
Виктор Щербаков ©   (2002-02-22 10:15) [3]

Это хэндл, возвращаемый функцией CreateFile.


 
Mitrofan   (2002-02-22 14:53) [4]

Я че то недопонимаю, что этот хэндл означает и для чего он нужен.
Могу ли я написать следующее и будет ли оно правильное

hStdOutput := Memo1.Handle;

Будет ли консольный вывод "валиться" в мое Memo ???


 
Юрий Зотов ©   (2002-02-22 15:06) [5]

Нет, не будет.

Вы должны:

1. Вызвать CreateFile, указав в Security Attributes, что хэндл будет наследуемым.
2. Полученный хэндл прописать в hStdOutput
3. При вызове CreateProcess указать bInheritHandles = True.

После этого вывод пойдет на устройство, созданное CreateFile (конечно, это не обязательно дисковый файл) - вот оттуда Вы и должны перебрасывать его в Memo своим кодом. И в конце работы нужно освободить 3 хэндла.



 
Miwa ©   (2002-02-23 01:32) [6]

А если запустить твою програмку консольную примерно так

your_prog >> resfile.txt
,
а потом просто считать результирующий файл?



Страницы: 1 вся ветка

Текущий архив: 2002.03.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.007 c
1-32471
Olivka
2002-02-22 22:44
2002.03.11
TMemoryStream


1-32487
Ig
2002-02-24 02:33
2002.03.11
Почему не срабатывает меню?


3-32410
Laimer
2002-02-12 10:52
2002.03.11
QRepord


6-32529
Dmitry V.
2001-12-25 15:15
2002.03.11
Не могу передать Image через сокет


1-32462
kirill2000
2002-02-23 15:16
2002.03.11
Подстановка