Функция 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

Запускаемый файл не является программой

Пример 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);