找回密码
 加入
搜索
查看: 2433|回复: 7

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

[复制链接]
发表于 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[0][0] To 2 Step -1
        ProcessClose($var[$i][1])
Next
;从最后一个进程(PID)到第二个进程(PID)逐个结束进程

[ 本帖最后由 星驰周 于 2009-1-10 00:12 编辑 ]
发表于 2009-1-8 11:53:35 | 显示全部楼层
像这种 一行就可以达到的效果 我觉得还是应该写在一个脚本里比较好
没必要 模块化 。。。。

[ 本帖最后由 sxd 于 2009-1-8 11:57 编辑 ]
 楼主| 发表于 2009-1-8 14:26:55 | 显示全部楼层
一行只是例子,实用起来当然不至一行了
发表于 2009-1-8 19:20:25 | 显示全部楼层
你这样调用的话,进程里应该有3个 文件1.exe
至于为什么有一个没退出,就要你自己检查源码了。
发表于 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[0][0] To 2 Step -1
        ProcessClose($var[$i][1])
Next
;从最后一个进程(PID)到第二个进程(PID)逐个结束进程

[ 本帖最后由 星驰周 于 2009-1-10 00:05 编辑 ]
发表于 2009-8-30 15:43:47 | 显示全部楼层
这个问题我现在还看不懂,等过段时间我再来学习
发表于 2013-11-3 17:05:52 | 显示全部楼层
这个问题我看不懂
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-28 19:22 , Processed in 0.087007 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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