【发布时间】:2011-11-08 12:26:47
【问题描述】:
我的同事有这个应用程序(用 Visual C++ 编写的 Windows 窗体应用程序),但我遇到了一些严重的问题。该应用程序既不是服务也不是普通应用程序,我的意思是它有一个 GUI,但大多数时候它在后台运行(它应该作为服务做出反应,但事实并非如此)。此应用程序阻止用户注销,我需要能够这样做。
我知道当用户尝试注销时,Windows 会向所有正在运行的应用程序发送WM_QUERYENDSESSION 消息。我试图在我的WndProc() 函数上捕获此消息并强制终止应用程序,但它只能工作一次。当我再次登录并尝试注销时,操作不会终止,因为我的应用程序不会关闭。
如果我尝试使用SessionEnding 事件,应用程序只会被放入系统托盘并保持在那里而不注销,但我相信这是因为Form_Closing 方法执行此操作而不是关闭程序(这是要求,我无法更改)。
也许另一个有用的信息是应用程序自动启动,因为它在HKLM 注册表中有一个条目,并且始终有 2 个该应用程序的实例在运行(一个应该监督另一个并在崩溃时重新启动它,但不是在“手动”关闭的情况下)。
任何建议都会受到欢迎。
谢谢。
【问题讨论】: