找回密码
 加入
搜索
查看: 6868|回复: 9

[AU3基础] exit 返回值 如何使用?[已解决]

  [复制链接]
发表于 2013-7-10 14:00:08 | 显示全部楼层 |阅读模式
本帖最后由 wu5cheng3 于 2013-7-11 01:29 编辑

例如  检测au3自身程序在任务管理器被结束,然后进行其他操作,重启自身程序或者执行重启计算机!

没看明白这个说明,求解或者代码实例来说明. (Exit、OnAutoItExitRegister() 、@EXITCODE)

[au3]
Exit
参数
返回值 [可选参数] 脚本退出时返回的整数代码. 这个代码可以使用于 Windows 或者 DOS 下面的 %ERRORLEVEL% 变量. 默认值为 0. 脚本正常的退出会设置 %errorlevel% 为 0 ,如果值为1就说明脚本没有正常退出(如:被任务管理器终止).

注意/说明
如果包含返回值参数,下列语句是正确的: Exit, Exit 0, 和 Exit(0). 然而, Exit() 是错误的.

返回值可以使用 OnAutoItExitRegister() 由 @EXITCODE 取得.

---------------------------------------------------------------------------------
OnAutoItExitRegister
注册一个当AutoIt退出时执行的函数.


OnAutoItExitRegister( "函数" )


参数
函数 要调用的用户自定义函数名称

返回值
成功: 返回 1. @extended 返回是否已被注册.
失败: 返回 0.

注意/说明
退出代码可以从 @ExitCode 得到.
退出方式可以从 @ExitMethod 得到.
0 正常关闭.
1 由 Exit 函数关闭.
2 点击系统托盘的退出而关闭.
3 由用户注销系统关闭.
4 Windows 关机.
[/au3]
发表于 2013-7-10 16:51:54 | 显示全部楼层
Exit(Msgbox(0,0,0))
 楼主| 发表于 2013-7-10 17:06:27 | 显示全部楼层
本帖最后由 wu5cheng3 于 2013-7-10 17:18 编辑

回复 2# haijie1223


    我想做这么一个判断,当程序在任务管理器中被结束掉或异常结束(帮助文档提示返回值为1)如何取得这个返回值,然后在做其他操作.

返回值可以使用 OnAutoItExitRegister() 由 @EXITCODE 取得.    具体使用方法.
发表于 2013-7-10 17:17:47 | 显示全部楼层
GetExitCodeProcess
getexitcodethread
 楼主| 发表于 2013-7-10 17:29:02 | 显示全部楼层
回复 4# ceoguang


这两个是???帮助文档中未找到。。。

只找到一个 _WinAPI_GetExitCodeProcess(检索指定进程的终止状态) 的函数
 楼主| 发表于 2013-7-10 17:30:52 | 显示全部楼层
这么说,程序检测到自己被非法关闭然后执行一个关机的操作.
发表于 2013-7-10 17:56:06 | 显示全部楼层
自己怎么可能检测自己的非正常关闭状态? 最多是再次运行时才能检测上次是否正常退出吧?
应该是用别的程序监测吧
发表于 2013-7-10 18:07:25 | 显示全部楼层
被检测不清楚~~
 楼主| 发表于 2013-7-10 18:57:02 | 显示全部楼层
本帖最后由 wu5cheng3 于 2013-7-10 18:59 编辑

回复 7# user3000


可能是我理解有误,帮助文档中有这么两句话

Exit 参数返回值 如果值为1就说明脚本没有正常退出(如:被任务管理器终止).

Exit 返回值可以使用 OnAutoItExitRegister() 由 @EXITCODE 取得.

我的理解是  程序可以自己检测自己在任务管理器中被结束掉,而非程序自身函数退出,然后可以使用OnAutoItExitRegister() 由 @EXITCODE 取得返回值还可以进行其他操作.

看的不太明白... ...
发表于 2013-7-10 19:20:10 | 显示全部楼层
实践操作一下不就好了吗?
OnAutoItExitRegister('_exit')
#cs
退出代码可以从 @ExitCode 得到.
退出方式可以从 @ExitMethod 得到.
0 正常关闭. 
1 由 Exit 函数关闭. 
2 点击系统托盘的退出而关闭. 
3 由用户注销系统关闭. 
4 Windows 关机. 
#ce
While 1
        Sleep(100)
WEnd

Func _exit()
        $txt = 'exitCode: ' & @exitCode & @CRLF & 'exitMethod: ' & @exitMethod 
        FileWrite('exit.txt', $txt)
        ShellExecute('exit.txt')
EndFunc
你把它编译成EXE, 点击托盘退出程序会弹出记录文本,而从任务管理器结束程序,则什么不会发生!
你要检测这个程序是从任务管理器结束程序,应该这样
$exit_code = RunWait('test.exe')
MsgBox(0, '', $exit_code)

评分

参与人数 1金钱 +30 收起 理由
wu5cheng3_bak + 30 谢谢讲解

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-2 08:08 , Processed in 0.085473 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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