vuivui 发表于 2012-12-19 14:05:48

用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 *****

shykx 发表于 2013-3-30 04:39:06

看了才知道是不是好东西。。

maolimin256 发表于 2013-3-30 10:59:52

学习了~~~~~~

1361739590 发表于 2013-4-3 09:40:02

谢谢想了解

lin6051 发表于 2013-5-4 11:21:15

本帖最后由 lin6051 于 2013-5-4 14:50 编辑

学习了,很不错,可以扔掉那个多进程udf了

huangwei 发表于 2013-5-4 20:42:18

学习了,楼主辛苦了

nlogo 发表于 2013-5-9 07:32:04

好厲害....真的棒

liu19910917 发表于 2013-5-9 10:17:27

多谢 楼主 下载 收藏!!!

tw8457 发表于 2013-5-9 10:21:49

好东西必须要顶啊~~~~~~~~~
收藏备用啦,谢谢楼主

huangwei 发表于 2013-7-15 12:37:06

谢谢分享,了解一下

拉风晓晓 发表于 2013-9-15 22:15:39

谢谢分享,了解一下

续缘8003 发表于 2013-9-25 15:17:01

谢谢了,路过学习啊

wszhov 发表于 2013-11-7 15:51:23

我还在想用命令行了,没想到撸主用autoitexe,学习了

markLuo 发表于 2013-11-7 18:07:45

autoit支持多线程?

bdancerlc 发表于 2013-12-1 04:13:50

厉害~ /AutoIt3ExecuteLine 执行多条语句的思路学习了,不知道这样Dim 赋值的方式会不会有什么后遗症,毕竟看起来感觉就是钻了个空子~
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 用au3命令行实现简单多进程