草庐IT

QUERYENDSESSION

全部标签

WM_QUERYENDSESSION 的 Windows 2003 Server 和远程桌面问题

我编写的用于检测Windows关机的小应用程序遇到了一个奇怪的问题。使用远程桌面连接到Windows2003服务器,有时在登录时我会从操作系统获得WM_QUERYENDSESSION,其中lParam=0,我的应用将其解释为关闭请求(如http://msdn.microsoft.com/en-us/library/aa376890%28VS.85%29.aspx中所述),因此,执行其任务。问题是,我实际上是在登录,而不是关闭或重新启动系统。我认为这可能与Windows2003Server下的session管理有关,因为同一工具在WindowsXP上的表现非常好。我尝试将远程访问限制为每

c++ - 输入法编辑器窗口为 WM_QUERYENDSESSION 返回 FALSE - 为什么?

我们有一个奇怪且非常罕见的问题,即人们无法在我们的产品运行时注销Windows服务器。系统是多应用的,都是MFC/C++。这些应用程序从管理服务运行,因此它们在注销后仍然存在。多年来,它在世界各地的大量安装中一直运行良好。我编写了一个测试应用程序来枚举所有窗口,向它们发送WM_QUERYENDSESSION消息,并在返回FALSE时停止。该测试是针对德国出现的问题重现的罕见案例之一进行的。它似乎总是一个不可见的IME(输入法编辑器)窗口是罪魁祸首,但IME窗口始终属于我们的MFC应用程序之一。我想我可以通过调用ImmDisableIME(-1)来解决单个应用程序的问题。但我正在寻找的是

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

我有一个程序可以响应WM_QUERYENDSESSION以执行一些作为计划任务运行的清理。日志记录表明未执行清理代码。作为计划任务运行的应用程序是否收到WM_QUERYENDSESSION消息或是否有任何其他方法来检测窗口关闭? 最佳答案 消息被发送到顶层窗口。如果您的流程有一个,它将被发送消息。如果您没有,那么您可以为此创建一个。如果您的应用程序是控制台应用程序,那么SetConsoleCtrlHandler是接收此类通知的推荐方式。从评论线程中可以看出,您的进程正在SYSTEM帐户下运行。根据documentation,这意味着

windows - 仅消息窗口可以接收 WM_QUERYENDSESSION 吗?

在程序的调试版本中,我创建了一个可见窗口,WM_QUERYENDSESSION消息由其WNDPROC接收。在发布版本中,窗口应该是纯消息的,所以我在调用CreateWindowEx()时将HWND_MESSAGE指定为hWndParent。不幸的是,我再也没有收到WM_QUERYENDSESSION消息。WM_QUERYENDSESSION是那些广播消息之一吗mentionedhere?Amessage-onlywindow[...]doesnotreceivebroadcastmessages. 最佳答案 MSDN给出了“仅消息窗