计划任务是否收到WM_QUERYENDSESSION消息?

jpf*_*ius 2 windows delphi winapi

我有一个程序响应WM_QUERYENDSESSION执行一些清理作为计划任务运行.记录表明未执行清理代码.作为计划任务运行的应用程序是否接收WM_QUERYENDSESSION消息,或者是否有其他方法来检测Window关闭?

Dav*_*nan 6

消息将发送到顶级窗口.如果您的流程有一个,则会发送消息.如果您没有,那么您可以为此创建一个.如果您的应用程序是控制台应用程序,则SetConsoleCtrlHandler建议您接收此类通知.

从评论主题中可以看出,您的流程在SYSTEM帐户下运行.根据documentation,这意味着它不会被系统关闭.

在系统安全上下文中运行的应用程序不会被操作系统关闭.通过可通过SetConsoleCtrlHandler安装的回调函数,他们会收到关闭或注销的通知.