首页 > 解决方案 > 一旦使用 Window+L 键切换用户,我想关闭我的应用程序。以任何语言接受任何技术的解决方案。

问题描述

一旦使用 Window+L 键切换用户,我想关闭我的应用程序。以任何语言接受任何技术的解决方案。

我有一个通过 MSI 安装的 bookMyApp wpf 应用程序。假设计算机有多个用户并使用以下场景。

--> 第一个用户打开 bookMyApp 应用程序并做了一些工作,一段时间后他尝试在不关闭 bookMyApp 应用程序的情况下切换用户。这时候我想自动关闭 bookMyApp 应用程序。无论如何这可能吗?

标签: .netwindowspowershellwinapi

解决方案


虽然我仍然坚持认为这是对用户怀有敌意的*并且强烈建议您对提出此要求的人进行强烈反击,但您可能正在寻找的是WM_WTSSESSION_CHANGE消息。这将传递给已注册通过该WTSRegisterSessionNotification函数接收它的窗口。

它报告的是控制台/远程连接事件和锁定事件。我相信,当您的会话不再使用快速用户切换时,您将收到WTS_CONSOLE_DISCONNECT. 但请注意,您收到该事件可能还有其他原因(例如,因为他们在本地工作并且现在已通过远程桌面连接到他们的会话)。您必须决定在这些其他情况下是否也可以终止您的程序1

这个问题寻找如何从 WPF 应用程序中获取窗口消息。


*我的第一条经验法则是,如果您被要求根据操作系统本身的运行方式做某事,首先看看您是否可以发现任何其他与您提议的方式相同的程序。如果你不能(我想不出任何与你提议的工作方式相匹配的方法),你需要认真考虑 a) 你的组织是否只是第一个想出一个未来许多其他人会效仿的绝妙想法的组织或 b) 它的用户体验很糟糕。几乎在所有情况下,如果你诚实地处理这个问题,你就会意识到它是 (b)。

1这只是我能想到的第一个例子。您不太可能找到更符合您要求的东西,因为您正在做的事情微软可能会深感不满,因为它破坏了快速的用户切换体验。


推荐阅读