用au3命令行实现简单多进程
本帖最后由 vuivui 于 2014-5-4 11:21 编辑多进程在au3中是代替多线程的一个常用手段,其实很多情况下用au3命令行来实现比较简单。以下一个解决弹窗的典型例子:#include <IE.au3>
$form = GUICreate("欢迎使用流量查询专用工具",750, 400);
$oIE = ObjCreate("Shell.Explorer.1") ;
GUICtrlCreateObj($oIE, -1, -25, 750, 400) ;
$oIE.Navigate("https://218.19.163.114")
Run(@AutoItExe & ' /AutoIt3ExecuteLine"Local $s=''安全警报'',$a=WinWait($s), $a=WinActivate($s), $a=ControlClick($s, '''', ''Button1''), $a=WinClose($s), $a=WinWait($s), $a=WinActivate($s), $a=ControlClick($s, '''', ''Button1'')"')
GUISetState(@SW_SHOW)
While 1
If GUIGetMsg() = -3 Then
Exit
EndIf
WEnd这个实例来自:http://www.autoitx.com/forum.php?mod=viewthread&tid=36261&extra=&page=1
原理是用“Run(@AutoItExe & ' /AutoIt3ExecuteLine……”语句来执行多条命令,优点是直接、简单、快速,并且不会在托盘产生多图标。
单行执行多条命令的方法比较多,最简单的是用定义变量的方法,结合其他的手段可以实现复杂的转向命令,简单的脚本大多能转换为单行命令的。
一些提示和外部程序的弹窗是不可预见的,这样多进程语句必须是预设性放置在语句段前面,前提是必须包含“Wait”命令。上面的例子可以改成这样:#include <IE.au3>
Run(@AutoItExe & ' /AutoIt3ExecuteLine"Local $s=''安全警报'',$a=WinWait($s), $a=WinActivate($s), $a=ControlClick($s, '''', ''Button1''), $a=WinClose($s), $a=WinWait($s), $a=WinActivate($s), $a=ControlClick($s, '''', ''Button1'')"')
$form = GUICreate("欢迎使用流量查询专用工具",750, 400);
$oIE = ObjCreate("Shell.Explorer.1") ;
GUICtrlCreateObj($oIE, -1, -25, 750, 400) ;
$oIE.Navigate("https://218.19.163.114")
GUISetState(@SW_SHOW)
While 1
If GUIGetMsg() = -3 Then
Exit
EndIf
WEnd简单多进程的好处是很多的,比如我们可以利用多进程分头执行耗时的程序。我经常利用多进程同时下载网页,大大节约了时间。
其他实例:
一、保持打开au3脚本
**** Hidden Message ***** 看了才知道是不是好东西。。 学习了~~~~~~ 谢谢想了解 本帖最后由 lin6051 于 2013-5-4 14:50 编辑
学习了,很不错,可以扔掉那个多进程udf了 学习了,楼主辛苦了 好厲害....真的棒 多谢 楼主 下载 收藏!!! 好东西必须要顶啊~~~~~~~~~
收藏备用啦,谢谢楼主 谢谢分享,了解一下 谢谢分享,了解一下 谢谢了,路过学习啊 我还在想用命令行了,没想到撸主用autoitexe,学习了 autoit支持多线程? 厉害~ /AutoIt3ExecuteLine 执行多条语句的思路学习了,不知道这样Dim 赋值的方式会不会有什么后遗症,毕竟看起来感觉就是钻了个空子~