Вниз
Скачать: 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.012 c
1-52281
Don
2003-12-04 08:20
2003.12.16
Как сделать, чтобы в Tform при запуске программы запускался *.ht


3-52071
Inkotex
2003-11-25 09:27
2003.12.16
Нужна помощь по SQL


14-52409
Jackson
2003-11-20 23:06
2003.12.16
Изображение со сканера.


1-52161
lahtak
2003-12-03 17:44
2003.12.16
Нетривиальная форма


3-52087
Bless
2003-11-21 15:33
2003.12.16
Почему может выскакивать Syntax error or access violation?




   Наверх