RunProgram()
Синтаксис
Result = RunProgram(Filename$ [, Parameter$ , WorkingDirectory$ [, Flags [, SenderProgram]]])
Описание
Запускает внешнюю программу.
Параметры
Filename$ Имя исполняемого файла включая его путь. Parameters$ (дополн.) Задает параметры командной строки, которые будут переданы программе. WorkingDirectory$ (дополн.) Указывает каталог, который будет текущим каталогом для запущенной программы. Flags (дополн.) Этот параметр может быть комбинацией (с помощью оператора '|') следующих значений: #PB_Program_Wait : Ждать, пока запущенная программа не завершится #PB_Program_Hide : Запустить программу в невидимом режиме #PB_Program_Open : Открыть программу для коммуникации с ней или получения информации о ней. #PB_Program_Read : Читать консольный вывод программы. (stdout) #PB_Program_Write : Записывать ввод программы. (stdin) #PB_Program_Error : Читать вывод ошибок программы. (stderr) #PB_Program_Connect: Подключить вывод другой программы ко вводу этой программы. #PB_Program_Ascii : Операция чтения/записи по умолчанию будет в режиме ASCII. #PB_Program_Unicode: Операция чтения/записи по умолчанию будет в режиме Unicode. #PB_Program_UTF8 : Операция чтения/записи по умолчанию будет в режиме UTF8 (по умолчанию).Программа, запущенная с флагом #PB_Program_Open, должна закрываться с помощью функции CloseProgram(). Флаги 'Read', 'Write', 'Error' и 'Connect' требуют установки флага #PB_Program_Open.
При использовании флага #PB_Program_Connect другая программа перед этим должна быть запущена с флагами #PB_Program_Open и #PB_Program_Read. Число, возвращаемое из этой функции, должно передаваться в качестве параметра 'SenderProgram' функции RunProgram(). Вывод программы-отправителя посылается прямо во ввод запускаемой программы. Таким образом можно соединить несколько программ, для 'конвейерной обработки' данных этой группой соединённых программ.
Для работы с программой, запущенной с флагом #PB_Program_Open, можно использовать следующие функции:
- IsProgram(): Проверяет, соответствует ли Номер программы корректной программе, запущенной с помощью функции RunProgram().
- ProgramID(): Возвращает идентификатор процесса (ProcessID OS) для программы.
- ProgramRunning(): Проверяет, выполняется ли всё ещё программа.
- WaitProgram(): Ждёт завершения программы.
- KillProgram(): Завершает программу.
- ProgramExitCode(): Возвращает код завершения программы.
- CloseProgram(): Закрывает соединение с программой.
Для работы с программами, запущенными с флагами 'Read', 'Write' и 'Error' можно использовать следующие функции:
- AvailableProgramOutput(): Проверяет, доступен ли вывод программ.
- ReadProgramString(): Читает строку из вывода программы.
- ReadProgramData(): Читает данные из вывода программы.
- ReadProgramError(): Читает строку из вывода ошибок программы.
- WriteProgramString(): Записывает строку во ввод программы.
- WriteProgramData(): Записывает данные во ввод программы.
Возвращаемое значение
Возвращает не нулевое значение, если программа была запущена успешно, в противном случае 0.
Если в состав параметра Flags включен флаг #PB_Program_Open возвращаемым значением будет число, идентифицирующее программу. Его можно использовать в вызовах функций для получения информации о программе, таких как ReadProgramString() или ProgramExitCode(), или других функций, упомянутых выше.
Пример
; Выполняет компилятор PB с опцией /? и отображает вывод (версия для windows) ; Для Linux/MacOS измените "/?" на "-h". ; Compiler = RunProgram(#PB_Compiler_Home+"/Compilers/pbcompiler", "/?", "", #PB_Program_Open | #PB_Program_Read) Output$ = "" If Compiler While ProgramRunning(Compiler) If AvailableProgramOutput(Compiler) Output$ + ReadProgramString(Compiler) + Chr(13) EndIf Wend Output$ + Chr(13) + Chr(13) Output$ + "Exitcode: " + Str(ProgramExitCode(Compiler)) CloseProgram(Compiler) ; Закрывает соединение с программой EndIf MessageRequester("Output", Output$)
В Windows функция RunProgram() использует приложение по умолчанию, связанное с типом данного файла. Пример: RunProgram("Test.html") откроет браузер, который обычно используется для отображения веб-сайтов на вашей системе.
Поддерживаемые OS
Все