星驰周 发表于 2009-1-8 04:47:35

进程中没有结束程序,如何解决?

文件1.au3
$mz1="打开临时文件夹.au3"
$mz2="打开当前文件夹.au3"
Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $mz2 & '"')
Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $mz1 & '"')

打开临时文件夹.au3
ShellExecute(@TempDir)

打开当前文件夹.au3
ShellExecute(@WorkingDir)

编译“文件1.au3”为“文件1.exe”后,和上面两个au3文件放在同一文件夹内运行,
结果进程里会有一个“文件1.exe”不能自动结束。

如何解决?

--------------------------------------------------------------------------------------------------------
没办法,在主程序(如文件1.au3)加入以下代码可提高成功率:

先改下这二个au3文件,添加一个延时
打开临时文件夹.au3
ShellExecute(@TempDir)
sleep(200)

打开当前文件夹.au3
ShellExecute(@WorkingDir)
sleep(200)


再在主程序中加入
Sleep(500)
;等待0.5秒
$var = ProcessList(@ScriptName)
;获取当前程序的进程列表
Sleep(300)
;等待0.3秒

For $i = $var To 2 Step -1
        ProcessClose($var[$i])
Next
;从最后一个进程(PID)到第二个进程(PID)逐个结束进程

[ 本帖最后由 星驰周 于 2009-1-10 00:12 编辑 ]

sxd 发表于 2009-1-8 11:53:35

像这种 一行就可以达到的效果 我觉得还是应该写在一个脚本里比较好
没必要 模块化 。。。。

[ 本帖最后由 sxd 于 2009-1-8 11:57 编辑 ]

星驰周 发表于 2009-1-8 14:26:55

一行只是例子,实用起来当然不至一行了

akmm88 发表于 2009-1-8 19:20:25

你这样调用的话,进程里应该有3个 文件1.exe
至于为什么有一个没退出,就要你自己检查源码了。

rolaka 发表于 2009-1-8 19:47:28

饿...如果这就是你的完整代码 那肯定最后只有两个

星驰周 发表于 2009-1-9 16:02:22

该结贴了

没办法,加入以下代码可提高成功率:

Sleep(500)
;等待0.5秒
$var = ProcessList(@ScriptName)
;获取当前程序的进程列表
Sleep(300)
;等待0.3秒

For $i = $var To 2 Step -1
        ProcessClose($var[$i])
Next
;从最后一个进程(PID)到第二个进程(PID)逐个结束进程

[ 本帖最后由 星驰周 于 2009-1-10 00:05 编辑 ]

hnzzlzj 发表于 2009-8-30 15:43:47

这个问题我现在还看不懂,等过段时间我再来学习

凡之雪 发表于 2013-11-3 17:05:52

这个问题我看不懂
页: [1]
查看完整版本: 进程中没有结束程序,如何解决?