命令行窗口是否正常重新启动并退出正在运行的应用程序



平台:Windows 2008服务器

遇到一个问题,我用pyinstaller生成的一个文件exe无法清除其关联的临时文件夹。阅读相关内容http://pythonhosted.org/PyInstaller/并发现如果exe不能正常关闭,它将不会删除与其关联的临时文件夹。之后,我与安装exe的IT人员进行了交谈,他们告诉我,该应用程序是在系统启动时启动的,每天晚上都会重新启动系统。

我试着了解在windows上重新启动系统是否会正常退出正在运行的应用程序,但找不到任何相关信息。

有人知道windows是否会在系统重新启动后正常退出正在运行的应用程序吗?

提前感谢

是的,但XP\Vista之间的实现略有不同。您还可以更改关闭计时器和自动关闭行为:如何在Windows中指定WaitToKillAppTimeout以加快关闭时间。

在Windows XP中:

在Windows XP中,每个正在运行的应用程序都会收到WM_QUERYENDESSION关闭时的消息。应用程序可以返回TRUE表示它们可以是关闭的,或者FALSE表示它们不应该是关闭(例如,因为这样做会导致用户丢失数据或销毁正在刻录的CD)。如果应用程序返回FALSE,在大多数情况下情况下,关闭将被取消(以及取消的应用程序关闭被发送到带有wParam==FALSE的WM_ENDSESSION)。

应用程序还可以按顺序延迟对WM_QUERYENDESSION的响应以显示询问用户想做什么的UI。例如,当记事本具有未保存的数据;你想保存你的数据"对话框,这就是它正在做的。默认情况下,应用程序对WM_QUERYENDESSION的响应可能会延迟5秒。5秒钟后,Windows XP将显示一个对话框指示应用程序没有响应,并允许用户以终止它。在用户对此对话框做出响应之前,应用程序可以阻止WM_QUERYENDESSION(并因此关闭)无限期地

在Windows Vista中

用户强制关闭的能力
在Windows XP中阻止应用程序允许用户取消关闭或终止阻止应用程序。如果后续应用程序块关闭,系统为每个块显示相同的UI应用这让许多用户感到沮丧,他们在关闭时向下;只是想要";他们的电脑关闭。Windows Vista将通过允许用户终止阻止应用程序并进行关闭";有力的"在强制关闭时,Windows将发送带有ENDESSION_CRITICAL标志的应用程序WM_QUERYENDESSION。如果应用程序响应FALSE,Windows将继续关闭并将发送应用程序WM_ENDSESSION。如果应用程序响应WM_QUERYENDESSION超时或WM_ENDSESSION,Windows将终止它。

将不再允许取消静默关闭
在Windows XP中,允许应用程序否决WM_QUERYENDESSION而不显示指示他们为什么需要取消关闭的任何UI。这些";不说话的关闭故障";对用户来说非常令人沮丧,他们经常一两分钟后意识到关闭失败,因为没有UI显示。Windows Vista将通过显示UI,即使应用程序否决WM_QUERYENDESSION。

某些类型的应用程序将不再被允许阻止关闭。关闭时,Windows Vista将检查每个运行应用程序没有响应(应用程序被定义为没有如果未响应中的任何窗口消息,则进行响应最后5秒),如果是,则自动终止。

Windows Vista也不允许控制台应用程序或应用程序没有可见的顶级窗口来阻止关闭在大多数情况下在某些情况下,此类应用程序在关闭时对用户的重要性不如具有可见顶层窗口的应用程序。如果应用程序没有可见的顶级窗口通过否决阻止关闭WM_QUERYENDESSION,或需要5秒以上才能响应WM_QUERYENDESSION或WM_ENDSESSION,Windows将自动终止它。

但是,如果没有可见顶层窗口的应用程序使用新API主动指示其需要阻止关闭,Windows Vista不会自动终止它,而是将其视为具有可见顶层的应用程序窗

相关内容

最新更新