Описание функции | |
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 0x2 = предоставить указатель дочернего потока STDOUT 0x4 = предоставить указатель дочернего потока STDERR 0x8 = предоставить указатель STDOUT и STDERR. 0x10 = предоставить дочерний от родительского потока STDIO. Этот флаг не может быть совмещен с любым другим флагом STDIO. Этот флаг имеет смысл только, когда родительская программа скомпилирована как консольное приложение. 0x10000 = дочерний консольный процесс должен быть создан в собственном окне, вместо использования родительского окна. Этот флаг имеет смысл только, когда родительская программа скомпилирована как консольное приложение. |
Возвращаемое значение
Успех: | Возвращает PID запущенного процесса. |
Ошибка: | Возвращает 0 и устанавливает @error не равным нулю. |
Примечания
Пути с пробелами должны быть заключены в одинарные кавычки.exect=Run(@ComSpec&'~~/c~~'&'commandName','''',@SW_HIDE)
См. также
RunWait, RunAs, RunAsWait, ShellExecute, ShellExecuteWait, ProcessClose
Примеры: | ![]() |
exect=$var_aa=Run('Explorer.exe~~/select,'&@ProgramFilesDir&'\Internet~~Explorer') GLOBALEXECT<a> ;; пример запуска программы
exect=Run('calc')||Sleep(1000)||ControlClick('Калькулятор',Null,'[ID:139]') ;; запустить калькулятор и эмулировать нажатие мыши на указанном элементе (на Win10 не работает)
exect=Run('notepad.exe')||WinWait('[CLASS:Notepad]')||Sleep(3000)||WinClose('[CLASS:Notepad]') ;; запустить "Блокнот", дождаться появления указанного окна и через 3 секунды закрыть окно
exect=Run('notepad.exe')||$var_h=WinWaitActive('[CLASS:Notepad]')||ControlSend(Eval('var_h'),Null,'Edit1','привет') ;; запустить "Блокнот", дождаться активизации и ввести слово "привет"
exect=Run('notepad.exe')||$var_h=WinWaitActive('[CLASS:Notepad]')||ControlSend(Eval('var_h'),Null,'Edit1','закройте~~окно')||WinWaitClose(Eval('var_h'))||MsgBox(4096,Null,'окно~~закрыто') ;; запустить "Блокнот", дождаться закрытие окна пользователем
exect=Run('notepad.exe')||$var_h=WinWaitActive('[CLASS:Notepad]')||ControlSend(Eval('var_h'),Null,'Edit1','сверните~~окно')||WinWaitNotActive(Eval('var_h'))||MsgBox(4096,Null,'окно~~не~~активно') ;; запустить "Блокнот", дождаться когда окно не будет активным
exect=$var_ipid=Run('notepad.exe')||Sleep(3000)||ProcessClose($var_ipid) ;; запустить "Блокнот" и через 3 секунды завершить процесс
exect=$var_ipid=Run('notepad.exe')||ProcessWaitClose($var_ipid)||MsgBox(4096,Null,'процесс~~завершился') ;; запускает "Блокнот" и ожидает его закрытия
exect=Run('notepad.exe')||$var_h=WinWait('[CLASS:Notepad]',Null,5)||WinSetState(HWnd($var_h),Null,@SW_MINIMIZE) ;; запускает "Блокнот", ожидает появление и сворачивает
exect=Run('notepad.exe')||$var_h=WinWait('[CLASS:Notepad]',Null,5)||SendKeepActive(HWnd($var_h)) <FOR> 1 <TO> 10 exect=Send('привет')||Sleep(500) <NEXT> exect=SendKeepActive(Null)||WinClose(HWnd($var_h)) ;; запустить "Блокнот" и удерживать окно блокнота активным при использовании функции Send()
exect=Run('notepad.exe')||$var_h=WinWait('[CLASS:Notepad]',Null,5)||IsHWnd(Eval('var_h'))?_ViewValues('Это~~дескриптор~~HWND'):_ViewValues('Это~~НЕ~~дескриптор~~HWND') ;; запустить "Блокнот" и проверить дескриптор окна на валидность
exect=Run(@ComSpec&'~~/k~~'&'netsh~~interface~~ip~~show~~address') ;; вызов консоли и передача параметров (консоль остаётся открытой)
exect=Run(@ComSpec&'~~/k~~'&ClipGet()) ;; вызов консоли и передача параметров из буфера обмена (консоль остаётся открытой)
exect=Run(@ScriptDir&'\TCIMG.exe~~infbx=InfoBox_TEST1') ;; пример запуска утилиты с параметрами
close=ACTIVE exect=Run(_PathFull('%%COMMANDER_PATH%%\TOTALCMD.EXE'),'''',@SW_MAXIMIZE) ;; закрыть активное окно TC и запустить
exect=Run('rundll32~~mshtml.dll,PrintHTML~~''%P%N''') ;; отправить файл под курсором на печать, выбор принтера