Run |
首页 后退 前进 |
Run 运行外部程序.
Run ( "program" [, "workingdir" [, show_flag [, opt_flag]]] ) 参数
返回值
备注 如果路径包含空格, 必须添加英文引号.
运行 DOS(控制台)命令, 请使用 Run(@ComSpec & " /c " & 'commandName', "", @SW_HIDE) ; 不要忘了 "/c" 前面的一个空格
程序运行后脚本将继续执行后面的语句. 要暂停脚本的执行, 直到程序完成, 请使用 RunWait() 函数代替.
提供 StderrRead(), StdinWrite() 与 StdoutRead() 函数的标准 I/O 参数与正确的特征值, 可以与子进程互动. 结合标志值(或使用 $STDERR_CHILD, $STDIN_CHILD & $STDOUT_CHILD, 由 Constants.au3 文件定义) 管理多个数据流.
使流关闭, 必须满足以下条件: 1) 子进程结束则关闭流(这种情况发生在子进程关闭时). 2) AutoIt 必须读出任何被捕获的流, 直到没有更多的数据存在. 3) 如果为子进程提供了 STDIN 流, 必须调用 StdinWrite() 关闭该流. 一旦检测到所有不再需要的流, 将自动释放所有内部资源.
StdioClose() 可用于强制关闭 STDIO 流.
函数示例 Example() ----------------------------------------
该函数可以通过命令调用 exect 参见: RunWait, RunAs, RunAsWait, ShellExecute, ShellExecuteWait, ProcessClose exect=$var_aa=Run('Explorer.exe~~/select,'&@ProgramFilesDir&'\Internet~~Explorer') GLOBALEXECT<a> ;;启动程序的例子
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'),'''','Edit1','Hello') ;; 运行"记事本",等待激活并输入"hello"
exect=Run('notepad.exe')||$var_h=WinWaitActive('[CLASS:Notepad]')||ControlSend(Eval('var_h'),'''','Edit1','закройте~~окно')||WinWaitClose(Eval('var_h'))||MsgBox(4096,'''','окно~~закрыто') ;; 运行"记事本",等待用户关闭窗口
exect=Run('notepad.exe')||$var_h=WinWaitActive('[CLASS:Notepad]')||ControlSend(Eval('var_h'),'''','Edit1','сверните~~окно')||WinWaitNotActive(Eval('var_h'))||MsgBox(4096,'''','окно~~не~~активно') ;; 运行"记事本",等到窗口不活动
exect=$var_ipid=Run('notepad.exe')||Sleep(3000)||ProcessClose($var_ipid) ;; 运行"记事本"和3秒完成这个过程
exect=$var_ipid=Run('notepad.exe')||ProcessWaitClose($var_ipid)||MsgBox(4096,'''','процесс~~завершился') ;; "记事本"开始并等待它关闭
exect=Run('notepad.exe')||$var_h=WinWait('[CLASS:Notepad]','''',5)||WinSetState(HWnd($var_h),'''',@SW_MINIMIZE) ;;开始"记事本",等待出现并关闭
exect=Run('notepad.exe')||$var_h=WinWait('[CLASS:Notepad]','''',5)||SendKeepActive(HWnd($var_h)) <FOR> 1 <TO> 10 exect=Send('Hello')||Sleep(500) <NEXT> exect=SendKeepActive('''')||WinClose(HWnd($var_h)) ;; 使用Send()函数运行记事本并保持记事本窗口处于活动状态
exect=Run('notepad.exe')||$var_h=WinWait('[CLASS:Notepad]','''',5)||IsHWnd(Eval('var_h'))?_ViewValues('Это~~дескриптор~~HWND'):_ViewValues('Это~~НЕ~~дескриптор~~HWND') ;; 运行记事本和检查窗口句柄的有效性
exect=Run(@ComSpec&'~~/k~~'&'netsh~~interface~~ip~~show~~address','''') ;; 调用控制台和传递参数(控制台保持打开状态)
exect=Run(@ComSpec&'~~/k~~'&ClipGet(),'''') ;;调用控制台并从剪贴板传递剪贴板(控制台保持打开状态) © Аверин Андрей для Total Commander Image Averin-And@yandex.ru |