Функция ExecProgram (String, String, String, Integer, Var Integer) : Integer
Top  Previous  Next


Назначение  
Функция для запуска внешних программ из программ, созданных на базе системы Атлантис. Данной функцией запускаются 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   Запускаемый файл не является программой   
Пример 1  
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);  
}  
Пример 2  
ExecProgram (pkzip' , '-v L:\FILES\DATA.ZIP >L:\FILES\result.txt', 0,  
   'Формирование списка файлов в архиве', $2000, aErrorCode);