Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.003 c
6-90339
Xeon
2001-10-27 22:48
2002.01.28
Dialer


4-90434
a-leksey
2001-11-26 11:39
2002.01.28
Нужно на время и конкретно отключить клавиатуру и мышь


3-90214
Savage
2001-12-21 02:44
2002.01.28
Как пользователь может узнать о изменениях данных, сделанных другим пользователем?


1-90299
Даггер
2002-01-08 11:49
2002.01.28
Хочется извратиться, а знаний не хватает...


4-90424
Shmel
2001-11-29 02:01
2002.01.28
ЕСТЬ Проблема!!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский