前面说过,正常与不正常退出,只有应用程序自己知道,就像我要你办件事,你一去不回来,我能判断你没办事吗?你在中途出了点事故爬不起来(崩溃),我给你消息有什么用?就算我能看着你做事,你做错了我提醒你一下,但改不改正那又是你的事;万一你的错误危害了我(比如拿刀来捅我),对不起,我只好向你的亲属MsgBox "由于XXX的行为危害了我,我只好关闭他,你们可以向我的上级申诉" [解决办法] 程序退出的返回值,这对其它程序来说基本没有什么意义,程序的返回值是由程序自定义的,这一点对C程序特别明显(如果LZ学过C也许就不会有此一问了,VB还真不知道怎样让应用程序返回一个值,你可以再开贴问问牛人们),以前用C写的exe来做系统的启动菜单(在DOS时代),在C的main函数中可以用return 返回一个值(当然值的意义是什么,由写程序的人来决定,如他可以用1代表正常退出,也可以用2或其它数代表),在Dos环境中可以用ERRORLEVEL来捕获到(现在你可以在控制台环境中测试),这是以前Dos启动菜单的一种可能写法 test.exe rem test.exe 返回1、2、3 if ERRORLEVEL 3 boot1.bat rem 是3执行boot1 if ERRORLEVEL 2 boot2.bat rem 是2执行boot2 if ERRORLEVEL 1 toot3.bat rem 是1执行boot3