Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.11;
Скачать: [xml.tar.bz2];




Вниз

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


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
,
а потом просто считать результирующий файл?




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.11;
Скачать: [xml.tar.bz2];




Наверх





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


1-32508           kingdom               2002-02-25 13:24  2002.03.11  
Как удалить директорию с поддиректориями


1-32498           Dima Kopachev         2002-02-25 03:03  2002.03.11  
Компоненты как у Netscape 6


1-32478           Geser                 2002-02-23 21:16  2002.03.11  
RxLib und D6


6-32534           Yuri Btr              2001-12-24 17:08  2002.03.11  
Net send