PureBasic

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

Все

<- RemoveEnvironmentVariable() - Оглавление Process - SetEnvironmentVariable()->