微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确定当前的Windows会话是否被locking?

我有一台应用程序在Windows XP计算机上每小时运行一次。 要正常运行,该应用程序需要解锁当前会话。 所以我想知道是否有办法知道当前的Windows会话是否被locking或不与C#和.NET 3.5。

更新:应用程序不能侦听SessionNotification事件。 应用程序可以随时启动,完成后终止。

谢谢!

检测外部进程是否交互式,并有任何可见的用户界面

在ListView列中添加图像

.Net核心忽略环境variablesDOTNET_SKIP_FirsT_TIME_EXPERIENCE

用WMI调用解决“拒绝访问”exception

AppFabric进行caching

如何在Windows 10邮件应用程序中使用附件打开新邮件

用静态存储持续时间破坏本地对象

在Desktop应用程序的发布版本中分发PDB文件的优点和缺点

自定义多因素Active Directory身份validation

当我input一个在运行时平台上不可用的函数时会发生什么?

这些没有经过我的测试,但看起来很有趣。 我会给他们一个测试,但是我的Visual Studio目前似乎还不太满意。

有什么方法可以让程序知道电脑是否被锁定? (谷歌缓存链接,谢谢@hometoast) (链接永久死亡)

大量的信息在这个线程中

如果您的应用程序可以一直运行并每小时“醒来”一次, SystemEvents.SessionSwitch事件可能会帮助您,上面的线程中有一个示例

我曾经使用GetForegroundWindow()函数来确定屏幕保护程序是否正在运行。 如果返回值为NULL ,那么屏幕保护程序(或者大概锁定的工作站)是活动的。 请注意,这是在Windows NT的早期阶段,没有记录这样做,并不能保证今天仍然会做同样的事情。

查看Win32 API参考,您可以使用类似OpenInputDesktop()来获取当前活动桌面的HDESK 。 如果您无法获得桌面的句柄,或者它与线程桌面不同,那么您的应用程序将运行在不活动的桌面(而工作站可能处于屏幕保护状态或被锁定)。 没有保证这种方法可行,但可能值得调查。

在这里回答了类似的问题。 我认为可以增强方法2和3来检测锁定状态。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐