找回密码
 加入
搜索
查看: 1600|回复: 6

[网络通信] 【解决】怎么样同时执行多个func

[复制链接]
发表于 2018-12-7 16:55:22 | 显示全部楼层 |阅读模式
本帖最后由 3131210 于 2018-12-7 21:19 编辑

有什么办法可以同时执行func Example吗?代码有sleep  因为要运行一些应用进行同样操作  但是打开的时候要等几秒
Dim $iPID[5]

For $i = 1 To 5
        Example($i)
Next

Func Example($number)
        $iPID[$number - 1] = Run('notepad.exe', '')
        Sleep(3000)
        ProcessClose($iPID[$number - 1])
EndFunc   ;==>Example


发表于 2018-12-7 19:54:28 | 显示全部楼层
多进程吧!比较简单
发表于 2018-12-7 20:04:53 | 显示全部楼层
Dim $iPID[5]
If $CmdLine[0]=1 Then

        Example($CmdLine[1])
Else
        For $i = 1 To 5
                Run(@ScriptFullPath & ' '&$i)
        Next
EndIf

Func Example($number)
        $iPID[$number - 1] = Run('notepad.exe', '')
        Sleep(3000)
        ProcessClose($iPID[$number - 1])
EndFunc        ;==>Example

发表于 2018-12-7 20:05:17 | 显示全部楼层
编译后使用
 楼主| 发表于 2018-12-7 20:14:24 | 显示全部楼层
这个也是多进程吧
 楼主| 发表于 2018-12-7 21:19:25 | 显示全部楼层
#include "CoProc.au3"

_CoProc("Test_1(1)")
_CoProc("Test_2(2)")

Func Test_1($sText)
        Local $iPID = Run('cmd')
        Sleep(3000)
        $var = WinList()
        For $i = 1 To $var[0][0]
                $temppid = WinGetProcess($var[$i][1])
                If $temppid = $iPID Then ExitLoop
        Next
        ControlSend($var[$i][1], '', '', $sText)
EndFunc   ;==>Test_1

Func Test_2($sText)
        Local $iPID = Run('cmd')
        Sleep(3000)
        $var = WinList()
        For $i = 1 To $var[0][0]
                $temppid = WinGetProcess($var[$i][1])
                If $temppid = $iPID Then ExitLoop
        Next
        ControlSend($var[$i][1], '', '', $sText)
EndFunc   ;==>Test_2
最后还是用CoProc多进程解决的
发表于 2018-12-25 17:19:10 | 显示全部楼层
CoProc.au3  正解,哈哈
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-27 03:16 , Processed in 0.075894 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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