Форум: "WinAPI";
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];
ВнизПерехват экранного вывода DOS приложений Найти похожие ветки
← →
valery_f (2001-11-27 13:02) [0]А не слышал ли кто нибудь про такую возможность? Интересуют две вещи:
1) не плодить отдельное окно при запуске DOS приложения;
2) поймать вывод на экран на предмет его разбора и, возможно, отображения "в нужном месте и в нужном виде".
← →
Delirium (2001-11-27 15:41) [1]Я тебе на thevalery@yahoo.com отослал
← →
Delirium (2001-11-27 15:54) [2]Увы, письмо вернулось, дай рабочий адрес, пришлю компонент с "перехватом" и "концом работы"
← →
Виктор Щербаков (2001-11-27 16:05) [3]Пример запуска extract.exe - DOS распаковщика CAB файлов с перенаправлением консольного вывода в файл:
procedure TForm1.Button1Click(Sender: TObject);
var
SI: TStartupInfo;
PI: TProcessInformation;
begin
//Заполняем структуру инициализации процесса
ZeroMemory(@SI, SizeOf(SI));
SI.cb := SizeOf(SI);
SI.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
SI.wShowWindow := SW_HIDE;
//Перенаправляем вывод в файл
SI.hStdOutput := CreateFile(PChar(ExtractFilePath(Application.ExeName) + "Output.tmp"), GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ, nil, CREATE_ALWAYS,
FILE_FLAG_OVERLAPPED, 0);
//Запускаем
if CreateProcess(nil, "extract.exe", nil, nil, False, 0, nil, nil, SI, PI) then
begin
CloseHandle(PI.hThread);
WaitForSingleObject(PI.hProcess, INFINITE); //ждем
CloseHandle(PI.hProcess);
end;
// Закрываем файл
CloseHandle(SI.hStdError);
end;
← →
valery_f (2001-11-27 17:33) [4]> ...дай рабочий адрес...
жду на uspekh@vlink.kharkov.ua
> Пример запуска extract.exe
виснет, зараза, на WaitForSingleObject (пытался запустить pkzip)
← →
Delirium (2001-11-27 18:32) [5]Отправил
← →
Виктор Щербаков (2001-11-28 10:15) [6]to valery_f
а pkzip с какой коммандной строкой запускал?
т.е. может он у тебя просто консольного ввода дожидается,
потому и кажется, что виснет.
Попробуй не скрывать окно - SI.wShowWindow := SW_SHOWNORMAL;
← →
valery_f (2001-11-28 11:32) [7]> Попробуй не скрывать окно - SI.wShowWindow := SW_SHOWNORMAL;
Уже пробовал - DOS сессия завершается и пишет в заголовке окна "finished", и пока не закроешь - назад не возвращается. При SW_HIDE, соответственно, даже закрывать-то нечего - только прервать тремя кнопками.
← →
Виктор Щербаков (2001-11-28 11:51) [8]В свойствах pkzip попробуй поставить галку
"Закрывать окно по завершении сеанса работы".
← →
valery_f (2001-11-28 13:17) [9]> В свойствах pkzip...
А как это сделать? Я ведь пускаю EXE а не PIF или LNK.
← →
Delirium (2001-11-28 20:22) [10]Так-как из "Кладовки" DOSCommand убрали, выложил его (чуть продправленый) у себя www.master-brain.boom.ru
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c