Главная страница
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.008 c
1-32477
Mouse
2002-02-23 23:42
2002.03.11
Многострочный StringGrid


7-32580
Hisant
2001-11-28 10:57
2002.03.11
Блокировка клавиш в Delphi


1-32513
Геральт
2002-02-24 22:58
2002.03.11
Работа с OLE контейнером


1-32472
Ilya
2002-02-22 16:40
2002.03.11
Массив компонентов.


14-32558
CB
2002-01-28 07:59
2002.03.11
БД