请教个程序重启的问题[已解决]
本帖最后由 z761003 于 2022-9-24 09:47 编辑下面这段代码能正常实现关闭后重启自己
#include <CoProc.au3> ;多线程
;Global $SubProc_0=_CoProc("Sub") ;多进程
MsgBox(0,"","我要重启了")
Exit Run(@ScriptFullPath)
Func Sub()
EndFunc
不过如果把多进程的$SubProc_0=_CoProc("Sub")这句注释去了,这个重启自己就启不来了,直接退出不反应了。我看了下这个多进程的函数,应该是下面这一句影响了它的自启,有前辈能想想办法,即让多进程能正常用,又能自启成功的方法:
$iPid = Run(FileGetShortName(@AutoItExe) & ' "' & @ScriptFullPath & '"', @WorkingDir, @SW_HIDE, 1 + 2 + 4)
=========整个函数我复制在这里
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
用命令行去重启 zghwelcome 发表于 2022-9-23 17:50
用命令行去重启
麻烦写出来我看看好吗,我试了十几种写法都没成功的 #include <CoProc.au3>;多线程
Global $SubProc_0 = _CoProc("Sub") ;多进程
MsgBox(0, "", "我要重启了")
EnvSet("CoProcParameterPresent", "")
EnvSet("CoProcParameter", "")
EnvSet("CoProc", "")
EnvSet("CoProcParent", "")
Exit Run(@ScriptFullPath)
Func Sub()
EndFunc ;==>Sub
zghwelcome 发表于 2022-9-23 20:07
真是大神,这种都能解决,,,,膜拜了 学习了,刚好我也需要这个功能 此人是骗子,谨防上当受骗。
页:
[1]