Функция ExecProgram |
Функция для запуска внешних программ из программ, созданных на базе системы Атлантис. Данной функцией запускаются Exe и Com файлы DOS, Win16 и Win32, а также Bat-файлы. Возможны режимы запуска с ожиданием завершения или без (параметр aRunFlags), а также с изображением текстового экрана запускаемой программы (DOS-версия). Поддерживается функция перенаправления входного и выходного потоков запускаемой программы в командной строке (параметр aParamStr).
function ExecProgram (aFileName, aParamStr, aTitle : string; aRunFlags : integer; var aExitCode : integer ) : integer;
aFileName : string - имя файла запускаемой программы. Если не задан полный путь, то запускаемая программа будет искаться в каталоге основной программы, затем в текущем каталоге и в путях DOS-переменной Path. Для Windows-версии в качестве имени запускаемой программы можно использовать слово 'Start', если в параметре aParamStr задано имя файла запускаемой программы с зарегистрированным расширением (например, "doc", "txt", "bmp" и т.д.). Зарегистрированные на данном компьютере расширения можно узнать командой "Assoc|More" или посмотреть в меню Explorer (Проводник) View|Options, вкладка File Types.
aParamStr : string - строка параметров запускаемой программы, например: '111.doc'. Строка может включать символы перенаправления ввода и вывода (символы "<" и ">"), например: 'Input.txt /c >Data.out'.
aTitle : string - строка заголовка окна, в которое выводится экран запущенной программы (для DOS-версии). В Windows-версии эта же строка используется для визуализации запуска внешней программы.
aRunFlags : integer - флаги запуска программы:
Название |
Константа |
DOS/Win |
Примечание |
pfSilent |
$8000 |
DOS |
Выполнение без вывода на экран. |
pfFullScreen |
$0000 |
DOS |
Выполнение на полном экране. |
pfUpScreenDiv2 |
$0001 |
DOS |
Выполнение на верхней половине экрана. |
pfDownScreenDiv2 |
$0002 |
DOS |
Выполнение на нижней половине экрана. |
pfUpScreenDiv3 |
$0004 |
DOS |
Выполнение на верхней трети экрана. |
pfDownScreenDiv3 |
$0008 |
DOS |
Выполнение на нижней трети экрана. |
pfKeepWindow |
$0010 |
DOS |
Сохранять окно на экране. Стирать по "пустому" вызову (при aFileName=''), что может быть полезно при запуске нескольких программ. |
pfDontRedrawScreen |
$0020 |
DOS |
Не перерисовывать экран при запуске программы (для программ, ничего не выводящих на экран). |
pfDontWait |
$1000 |
DOS/Win |
Не ждать завершения программы. |
pfWaitKey |
$2000 |
DOS |
После выполнения программы ждать нажатия клавиши (для программ, работающих в строчном режиме). |
pfSetHandleCount |
$4000 |
DOS |
Установить предельное число открытых файлов для запускаемой программы > 20. |
aExitCode : integer - параметр, возвращающий код завершения программы (обычно 0 - нормальное завершение, но некоторые программы, например pkzip, имеют ненулевые успешные коды).
Функция возвращает код ошибки запуска программы:
0 |
Нет ошибки |
2 |
Запускаемая программа не найдена |
5 |
Нет прав на доступ к запускаемой программе или каталогу |
8 |
Не хватает памяти для загрузки программы |
10 |
Не найдена одна из динамических библиотек запускаемой программы |
11 |
Запускаемый файл не является программой |
var aDosCode, aErrorCode : integer; aDosCode:= ExecProgram ('Winword.exe' , 'L:\DOC\PRINT.DOC /P', 'Печать файла', 0, aErrorCode); if aDosCode <> 0 then { Message ('Программа не запустилась !', mfError); } else { if aErrorCode <> 0 then Message ('Файл не напечатан !', mfError); }
ExecProgram ('pkzip', '-v L:\FILES\DATA.ZIP >L:\FILES\result.txt', 0, 'Формирование списка файлов в архиве', $2000, aErrorCode);