wu5cheng3_bak 发表于 2013-7-10 14:00:08

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

本帖最后由 wu5cheng3 于 2013-7-11 01:29 编辑

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

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


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 关机.

haijie1223 发表于 2013-7-10 16:51:54

Exit(Msgbox(0,0,0))

wu5cheng3_bak 发表于 2013-7-10 17:06:27

本帖最后由 wu5cheng3 于 2013-7-10 17:18 编辑

回复 2# haijie1223


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

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

ceoguang 发表于 2013-7-10 17:17:47

GetExitCodeProcess
getexitcodethread

wu5cheng3_bak 发表于 2013-7-10 17:29:02

回复 4# ceoguang


{:face (270):}这两个是???帮助文档中未找到。。。

只找到一个 _WinAPI_GetExitCodeProcess(检索指定进程的终止状态) 的函数

wu5cheng3_bak 发表于 2013-7-10 17:30:52

这么说,程序检测到自己被非法关闭然后执行一个关机的操作.

user3000 发表于 2013-7-10 17:56:06

自己怎么可能检测自己的非正常关闭状态? 最多是再次运行时才能检测上次是否正常退出吧?
应该是用别的程序监测吧

haijie1223 发表于 2013-7-10 18:07:25

被检测不清楚~~

wu5cheng3_bak 发表于 2013-7-10 18:57:02

本帖最后由 wu5cheng3 于 2013-7-10 18:59 编辑

回复 7# user3000


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

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

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

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

看的不太明白... ...

user3000 发表于 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]
查看完整版本: exit 返回值 如何使用?[已解决]