Функция Run

 ↑  ←  Описание функции


Run

Выполняет запуск других программ.

Run ( "program" [, "workingdir" [, show_flag [, opt_flag ]]] )

Параметры

program Полный путь к программе (EXE, BAT, COM, или PIF) для запуска (см. примечания).
workingdir [необязательный] Рабочий каталог. Это не путь к программе.
show_flag [необязательный] Режим отображения запускаемой программы:
@SW_HIDE = скрытое окно (или ключевое слово Default)
@SW_MINIMIZE = свернутое окно
@SW_MAXIMIZE = развернутое окно
opt_flag [необязательный] Управление различными опциями взаимодействия родительского и дочернего процессов.
0x1 ($STDIN_CHILD) = предоставить указатель дочернего потока STDIN
0x2 ($STDOUT_CHILD) = предоставить указатель дочернего потока STDOUT
0x4 ($STDERR_CHILD) = предоставить указатель дочернего потока STDERR
0x8 ($STDERR_MERGED) = предоставить указатель STDOUT и STDERR. Подразумевается оба $STDOUT_CHILD и $STDERR_CHILD.
0x10 ($STDIO_INHERIT_PARENT) = предоставить дочерний от родительского потока STDIO. Этот флаг не может быть совмещен с любым другим флагом STDIO. Этот флаг имеет смысл только, когда родительская программа скомпилирована как консольное приложение.
0x10000 ($RUN_CREATE_NEW_CONSOLE) = дочерний консольный процесс должен быть создан в собственном окне, вместо использования родительского окна. Этот флаг имеет смысл только, когда родительская программа скомпилирована как консольное приложение.

Возвращаемое значение

Успех:Возвращает PID запущенного процесса.
Ошибка:Возвращает 0 и устанавливает @error не равным нулю.

Примечания

Пути с пробелами должны быть заключены в кавычки.

Для запуска DOS (console) команд, попробуйте

Run(@ComSpec & " /c " & 'commandName', "", @SW_HIDE)    ; не забывайте пробел перед "/c"


После запуска указанной программы скрипт продолжает выполняться. Используйте функцию RunWait(), чтобы приостановить выполнение скрипта до момента завершения выполнения запущенной программы.

Предоставление параметров стандартного ввода/вывода с соответствующими значениями разрешённых взаимодействий с дочерним процессом происходит через функции StderrRead(), StdinWrite() и StdoutRead(). Комбинация (сумма) значений флагов (или использование $STDERR_CHILD, $STDIN_CHILD и $STDOUT_CHILD, определяемых в Constants.au3) управляет несколькими потоками.

Для того чтобы закрыть потоки, должны быть выполнены следующие условия: 1) Дочерний процесс завершён - это конец потока (это происходит, когда дочерний завершён). 2) AutoIt должен читать любой захваченный поток до отсутствия данных. 3) Если STDIN предназначен для дочернего, то должен быть вызван StdinWrite() чтобы закрыть поток. После того как все потоки обнаружены как не нужные, все внутренние ресурсы будут автоматически освобождены.
StdioClose() используется для принудительного закрытия потоков STDIO.

См. также

RunWait, RunAs, RunAsWait, ShellExecute, ShellExecuteWait, StderrRead, StdinWrite, StdoutRead, StdioClose, ProcessClose, ConsoleRead

Пример

Run('Explorer.exe /select,' & @ProgramFilesDir & '\Internet Explorer')

Exit

; полезно путь обрамить кавычками
Run('Explorer.exe /select,"' & @ProgramFilesDir & '\Internet Explorer"')

; Загрузить куст реестра
Run('Reg Load HKLM\Mounted001 "' & @ScriptDir & '\file.hiv"', '', @SW_HIDE)
; тот же запуск используя как команду cmd.exe с применением скрытия окна консоли
Run(@ComSpec & ' /C Reg Load HKLM\Mounted001 "' & @ScriptDir & '\file.hiv"', '', @SW_HIDE)

; Запускает блокнот развёрнутым на весь экран
Run(@WindowsDir & "\notepad.exe", "", @SW_MAXIMIZE)

; Создаёт виртуальный диск Y:\ из указанной папки "C:\Program Files"
Run('subst.exe Y: "' & @ProgramFilesDir & '"', '', @SW_HIDE)
; Отключает виртуальный диск Y:\ созданный командой subst
Run('subst.exe Y: /d', '', @SW_HIDE)

; Прыжок в ветку реестра
Run(@ScriptDir & '\RegScanner.exe /regedit "HKEY_CURRENT_USER\Environment"', "", @SW_HIDE)