3131210 发表于 2018-12-7 16:55:22

【解决】怎么样同时执行多个func

本帖最后由 3131210 于 2018-12-7 21:19 编辑

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

Dim $iPID

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



heavenm 发表于 2018-12-7 19:54:28

多进程吧!比较简单

gto250 发表于 2018-12-7 20:04:53

Dim $iPID
If $CmdLine=1 Then

        Example($CmdLine)
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

gto250 发表于 2018-12-7 20:05:17

编译后使用

3131210 发表于 2018-12-7 20:14:24

这个也是多进程吧

3131210 发表于 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
                $temppid = WinGetProcess($var[$i])
                If $temppid = $iPID Then ExitLoop
        Next
        ControlSend($var[$i], '', '', $sText)
EndFunc   ;==>Test_1

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

最后还是用CoProc多进程解决的

opq6789 发表于 2018-12-25 17:19:10

CoProc.au3正解,哈哈
页: [1]
查看完整版本: 【解决】怎么样同时执行多个func