Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.016 c
4-52442
zdn
2003-10-21 22:41
2003.12.16
LockFile


14-52356
Varfolomey
2003-11-23 02:56
2003.12.16
Каккой ОС пользуется Билл Гейтс?


3-52103
gedd
2003-11-21 10:26
2003.12.16
DBGRID с сортировков по столбцам


3-52082
Sodom
2003-11-24 14:59
2003.12.16
Выполнение очень долгого запроса.


3-52057
The X
2003-11-23 23:56
2003.12.16
Вопрос по корректной работе с датами в SQL - еще раз.




   Наверх