我有一个程序对WM_QUERYENDSESSION
作出反应,执行一些清理运行作为一个计划任务。 logging表明清理代码没有执行。 作为计划任务运行的应用程序是否收到WM_QUERYENDSESSION消息或者是否有其他方法来检测窗口closures?
消息被发送到顶层窗口。 如果你的进程有一个,它会发送消息。 如果你没有,那么你可以为此创建一个。 如果您的应用程序是控制台应用程序,则SetConsoleCtrlHandler
是接收此类通知的推荐方式。
它从注释线程中发现您的进程正在SYSTEM
帐户下运行。 根据documentation
,这意味着它不会被系统关闭。
在系统安全上下文中运行的应用程序不会被操作系统关闭。 他们会通过SetConsoleCtrlHandler安装的回调函数得到关机或注销的通知。