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

我有一个程序对WM_QUERYENDSESSION作出反应,执行一些清理运行作为一个计划任务。 logging表明清理代码没有执行。 作为计划任务运行的应用程序是否收到WM_QUERYENDSESSION消息或者是否有其他方法来检测窗口closures?

消息被发送到顶层窗口。 如果你的进程有一个,它会发送消息。 如果你没有,那么你可以为此创建一个。 如果您的应用程序是控制台应用程序,则SetConsoleCtrlHandler是接收此类通知的推荐方式。

它从注释线程中发现您的进程正在SYSTEM帐户下运行。 根据documentation ,这意味着它不会被系统关闭。

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