Вверх ↑
Ответов: 4638
Рейтинг: 755
#1: 2018-12-28 14:44:54 ЛС | профиль | цитата
Многострадальный WinExec

Очередная переработка - дошли руки до работы с консольными приложениями в этом компоненте. Меня давно коробил имеющийся там код (в том числе, и по стилю "курица лапой").
Предлагаю:

1) Корректно работает определение завершения работы консольной программы, в т.ч bat-файла. Выдаётся событие onConsoleTerminate, заполняется точка ExitCode.
2) По doConsoleExec выдаются события onExec/onErrorExec, заполняется точка ProcessID
3) Добавлен метод doConsoleDetach - отключиться от консольной программы без её завершения. Например, если нужно запустить программу, передать ей консольный ввод и завершиться, а она пусть работает себе. Правда, многие программы в таком случае могут просто завершать работу, так как им уже нечего ждать с консольного ввода (предполагаю, обычно это интерактивные программы, плотно работающие с вводом пользователя - та же cmd.exe).
При завершении родительской программы запущенная консольная теперь не убивается по Terminate, а от нее просто отключаемся (не надо висеть обеим программам, пока консольная отработает. А с не работавшим определением завершения консольной программы это был просто капец).

WinExec mod 1-6.zip
карма: 26

0
Редактировалось 3 раз(а), последний 2019-01-11 18:25:22