找回密码  加入

QQ登录

只需一步,快速开始

AUTOIT CN

搜索
查看: 53995|回复: 253

[原创] 用au3命令行实现简单多进程

[复制链接]
发表于 2012-12-19 14:05:48 | 显示全部楼层 |阅读模式
本帖最后由 vuivui 于 2014-5-4 11:21 编辑

多进程在au3中是代替多线程的一个常用手段,其实很多情况下用au3命令行来实现比较简单。以下一个解决弹窗的典型例子:
  1. #include <IE.au3>
  2. $form = GUICreate("欢迎使用流量查询专用工具",750, 400);
  3. $oIE = ObjCreate("Shell.Explorer.1") ;
  4. GUICtrlCreateObj($oIE, -1, -25, 750, 400) ;
  5. $oIE.Navigate("https://218.19.163.114")

  6. 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'')"')

  7. GUISetState(@SW_SHOW)
  8. While 1   
  9.    If GUIGetMsg() = -3 Then
  10.           Exit
  11.         EndIf  
  12. WEnd
复制代码
这个实例来自:http://www.autoitx.com/forum.php?mod=viewthread&tid=36261&extra=&page=1

原理是用“Run(@AutoItExe & ' /AutoIt3ExecuteLine……”语句来执行多条命令,优点是直接、简单、快速,并且不会在托盘产生多图标。

单行执行多条命令的方法比较多,最简单的是用定义变量的方法,结合其他的手段可以实现复杂的转向命令,简单的脚本大多能转换为单行命令的。

一些提示和外部程序的弹窗是不可预见的,这样多进程语句必须是预设性放置在语句段前面,前提是必须包含“Wait”命令。上面的例子可以改成这样:
  1. #include <IE.au3>

  2. 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'')"')

  3. $form = GUICreate("欢迎使用流量查询专用工具",750, 400);
  4. $oIE = ObjCreate("Shell.Explorer.1") ;
  5. GUICtrlCreateObj($oIE, -1, -25, 750, 400) ;
  6. $oIE.Navigate("https://218.19.163.114")
  7. GUISetState(@SW_SHOW)
  8. While 1   
  9.    If GUIGetMsg() = -3 Then
  10.           Exit
  11.         EndIf  
  12. WEnd
复制代码
简单多进程的好处是很多的,比如我们可以利用多进程分头执行耗时的程序。我经常利用多进程同时下载网页,大大节约了时间。


其他实例:


一、保持打开au3脚本
游客,如果您要查看本帖隐藏内容请回复

评分

2

查看全部评分

发表于 2013-3-30 04:39:06 | 显示全部楼层
看了才知道是不是好东西。。
发表于 2013-3-30 10:59:52 | 显示全部楼层
学习了~~~~~~
发表于 2013-4-3 09:40:02 | 显示全部楼层
谢谢  想了解
发表于 2013-5-4 11:21:15 | 显示全部楼层
本帖最后由 lin6051 于 2013-5-4 14:50 编辑

学习了,很不错,可以扔掉那个多进程udf了
发表于 2013-5-4 20:42:18 | 显示全部楼层
学习了,楼主辛苦了
发表于 2013-5-9 07:32:04 | 显示全部楼层
好厲害....真的棒
发表于 2013-5-9 10:17:27 | 显示全部楼层
多谢 楼主 下载 收藏!!!
发表于 2013-5-9 10:21:49 | 显示全部楼层
好东西必须要顶啊~~~~~~~~~
收藏备用啦,谢谢楼主
发表于 2013-7-15 12:37:06 | 显示全部楼层
谢谢分享,了解一下
发表于 2013-9-15 22:15:39 | 显示全部楼层
谢谢分享,了解一下
发表于 2013-9-25 15:17:01 | 显示全部楼层
谢谢了,路过学习啊
发表于 2013-11-7 15:51:23 | 显示全部楼层
我还在想用命令行了,没想到撸主用autoitexe,学习了
发表于 2013-11-7 18:07:45 | 显示全部楼层
autoit支持多线程?
发表于 2013-12-1 04:13:50 | 显示全部楼层
厉害~ /AutoIt3ExecuteLine 执行多条语句的思路学习了,不知道这样Dim 赋值的方式会不会有什么后遗症,毕竟看起来感觉就是钻了个空子~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2019-12-10 02:17 , Processed in 0.093754 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表