我有一台应用程序在Windows XP计算机上每小时运行一次。 要正常运行,该应用程序需要解锁当前会话。 所以我想知道是否有办法知道当前的Windows会话是否被locking或不与C#和.NET 3.5。
更新:应用程序不能侦听SessionNotification事件。 应用程序可以随时启动,完成后终止。
谢谢!
检测外部进程是否交互式,并有任何可见的用户界面
在ListView列中添加图像
.Net核心忽略环境variablesDOTNET_SKIP_FirsT_TIME_EXPERIENCE
AppFabric进行caching
用静态存储持续时间破坏本地对象
在Desktop应用程序的发布版本中分发PDB文件的优点和缺点
自定义多因素Active Directory身份validation
这些没有经过我的测试,但看起来很有趣。 我会给他们一个测试,但是我的Visual Studio目前似乎还不太满意。
有什么方法可以让程序知道电脑是否被锁定? (谷歌缓存链接,谢谢@hometoast) (链接永久死亡)
大量的信息在这个线程中
如果您的应用程序可以一直运行并每小时“醒来”一次, SystemEvents.SessionSwitch事件可能会帮助您,上面的线程中有一个示例
我曾经使用GetForegroundWindow()函数来确定屏幕保护程序是否正在运行。 如果返回值为NULL ,那么屏幕保护程序(或者大概锁定的工作站)是活动的。 请注意,这是在Windows NT的早期阶段,没有记录这样做,并不能保证今天仍然会做同样的事情。
查看Win32 API参考,您可以使用类似OpenInputDesktop()来获取当前活动桌面的HDESK 。 如果您无法获得桌面的句柄,或者它与线程桌面不同,那么您的应用程序将运行在不活动的桌面(而工作站可能处于屏幕保护状态或被锁定)。 没有保证这种方法可行,但可能值得调查。
我在这里回答了类似的问题。 我认为可以增强方法2和3来检测锁定状态。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。