我有一个程序响应WM_QUERYENDSESSION
执行一些运行作为计划任务的清理。记录表明未执行清理代码。作为计划任务运行的应用程序是否接收WM_QUERYENDSESSION消息,还是有其他方法可以检测Window关闭?
答案 0 :(得分:6)
消息被发送到顶级窗口。如果您的流程有一个,则会发送消息。如果您没有,那么您可以为此创建一个。如果您的应用程序是控制台应用程序,则建议使用SetConsoleCtrlHandler
来接收此类通知。
从评论主题中可以看出,您的流程在SYSTEM
帐户下运行。根据{{3}},这意味着它不会被系统关闭。
在系统安全上下文中运行的应用程序不会被操作系统关闭。通过SetConsoleCtrlHandler可以安装的回调函数通知他们关闭或注销。