本帖最后由 ScriptFans 于 2016-3-25 20:14 编辑
这是CoProc.au3里面用于启动新进程的函数,它用一个独立进程运行一个指定函数,用于实现近似多线程效果,但是这个_CoProc()函数代码我反复看了几遍没看出来它是怎么运行指定函数的,代码如下:Func _CoProc($sFunction = Default, $vParameter = Default)
Local $iPid, $iOldRunErrorsFatal
If IsKeyword($sFunction) Or $sFunction = "" Then $sFunction = "__CoProcDummy"
;$iOldRunErrorsFatal = Opt("RunErrorsFatal", 0)
EnvSet("CoProc", "0x" & Hex(StringToBinary ($sFunction)))
EnvSet("CoProcParent", @AutoItPID)
If Not IsKeyword($vParameter) Then
EnvSet("CoProcParameterPresent", "True")
EnvSet("CoProcParameter", StringToBinary ($vParameter))
Else
EnvSet("CoProcParameterPresent", "False")
EndIf
If @Compiled Then
$iPid = Run(FileGetShortName(@AutoItExe), @WorkingDir, @SW_HIDE, 1 + 2 + 4)
Else
$iPid = Run(FileGetShortName(@AutoItExe) & ' "' & @ScriptFullPath & '"', @WorkingDir, @SW_HIDE, 1 + 2 + 4)
EndIf
If @error Then SetError(1)
;Opt("RunErrorsFatal", $iOldRunErrorsFatal)
Return $iPid
EndFunc ;==>_CoProc
里面的Run()函数只是运行了一个AutoIt3.exe,并没有看到加入Function,还有EnvSet设置的环境变量也不知道有什么用。
请教哪位给解释解释! |