Страница 1 из 1

Вызов внешней программы

Добавлено: 09 авг 2005, 18:43
Sheinina
Нужно из своего интерфейса выполнить некий .bat-файл. Возможно ли это, и если да, то как?

Добавлено: 09 авг 2005, 20:24
m0p3e
19.1. Функция ExecProgram (String, String, String, Integer, Var Integer) : Integer
Назначение
Функция для запуска внешних программ из программ, созданных на базе системы Атлантис. Данной функцией запускаются 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);

Добавлено: 10 авг 2005, 11:20
Sheinina
Спасибо. Буду разбираться.

Добавлено: 10 авг 2005, 13:57
Sheinina
Получилось:) Спасибо еще раз.