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

Вниз

Левоая консольная прога чарез CreateProcess   Найти похожие ветки 

 
Zheks ©   (2003-12-04 10:24) [0]

Подскажите плз. как запретить программе вывод на консоль?
exeшник я запускаю CreateProcess();

спасибо


 
Polevi ©   (2003-12-04 11:06) [1]

переопределить stdout процесса


 
Polevi ©   (2003-12-04 11:17) [2]

procedure TForm1.Button1Click(Sender: TObject);
var
sa:TSecurityAttributes;
si:TStartupInfo;
pi:TProcessInformation;
stdin,stdout:THandle;
begin
if not CreatePipe(stdin, stdout, @sa, 0) then RaiseLastOSError;
GetStartupInfo(si);
si.cb:=sizeof(TStartupInfo);
si.dwFlags:=STARTF_USESTDHANDLES;
si.hStdInput:=stdin;
si.hStdOutput:=stdout;
si.hStdError:=stdout;
if not CreateProcess(nil,"cmd.exe",nil,nil,true,0,nil,nil,si, pi) then
RaiseLastOSError;
end;


 
Zheks ©   (2003-12-04 12:03) [3]

Спасибочки, сейчас буду пробовать... просто мне + к этому нужно ещё дождаться завершения процесса программы поэтому наворотил и запутался...


 
Zheks ©   (2003-12-04 12:16) [4]

procedure TForm1.Button1Click(Sender: TObject);
var
sa:TSecurityAttributes;
si:TStartupInfo;
pi:TProcessInformation;
stdin,stdout:THandle;
begin
sa.nLength := sizeof(sa);
sa.bInheritHandle := true;
sa.lpSecurityDescriptor := nil;
if not CreatePipe(stdin, stdout, @sa, 1024) then RaiseLastOSError;
GetStartupInfo(si);
si.cb:=sizeof(TStartupInfo);
si.dwFlags:=STARTF_USESTDHANDLES;
si.hStdInput:=stdin;
si.hStdOutput:=stdout;
si.hStdError:=stdout;
if not CreateProcess(nil,"obspar96.exe",nil,nil,true,0,nil,nil,si, pi) then
RaiseLastOSError;
end;

блин, почему файлы, которые получаются после работы программы пустые?, хотя если вручную(из ФМ) запустить, то всё работает


 
Polevi ©   (2003-12-04 12:22) [5]

зачем тебе вообще запрещать вывод на консоль, мне кажется в твоем случае проще просто не показывать окно запусканмого приложения


 
Zheks ©   (2003-12-04 12:39) [6]

Проблема такая: 1) при выводе на косоль раздаются Beep(ы); которые существенно тормозят обработку.
2) Программа производит обработку в 2 этапа:
1. Обрабатывает первую часть данных сохраняет результат
2. Обрабатывает вторую часть данных сохраняет результат поверх старого, поэтому я жду завершения обработки первой части и переношу их.


 
Polevi ©   (2003-12-04 13:12) [7]

в фак есть пример перехвата ввода-вывода cmd.exe
теоретически ты можешь перенаправить вывод своей пронраммы в свой буфер и анализировать его - наверняка прогрмма сообщает в консоль об этапах своей деятельности



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

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

Наверх




Память: 0.48 MB
Время: 0.013 c
7-52427
nikkkk
2003-10-07 15:49
2003.12.16
чистим оперативку...


1-52252
FilSM
2003-12-04 14:09
2003.12.16
.exe файл без иконки


3-52076
BlackCat
2003-11-23 17:18
2003.12.16
Проблема с БД


3-52053
Vemer
2003-11-25 13:28
2003.12.16
Правильное подтверждение транзакции.


1-52278
REA
2003-12-04 10:20
2003.12.16
ListView click